1.内容冲突
产生冲突的原因:两个用户修改了同一个文件的同一块区域,git会报告内容冲突。我们常见的都是这种。
解决冲突的办法:编辑冲突文件,修改冲突。
例如:冲突文件test.c
test.c发生冲突后的内容如下:
#include#include ++<<<<<<< HEAD+/* wide character strlen fucntion */+size_t my_wc_strlen(const wchar_t *s)++= = = = = = =+ wchar_t *my_wstrchr(wchar_t *ws, wchar_t wc)+{++while (*ws) {++ws;+ }+ return NULL;+}++ size_t my_wstrlen(const wchar_t *s)++>>>>>>>9d201a9c61bc4713f4095175f8954b642dae8f86{const wchar_t *p = s;
}
其中:<<<<<<<与=======之间的内容是我修改的,=======与>>>>>>>之间的内容是别人的修改。
解决办法:删除冲突标记,解决冲突。
2.树冲突
产生冲突的原因:文件名修改造成的冲突,称为树冲突。
比如,a用户把文件改名为a.c,b用户把同一个文件改名为b.c,那么b将这两个commit合并时,会产生冲突。
$git status
added by us:b.c
both deleted:origin-name.c
added by them:a.c
如果最终确定用b.c
解决冲突的办法:
git rm a.c
git rm origin-name.c
git add b.c
git commit
执行前面两个git rm时,会警告“file-name:needs merge”,可以不必理会。