Git在pull的时候是非常容易冲突的,不仅仅是在于修改文件冲突,还有一种冲突是由于只commit不push的情况下进行pull
具体情况如下:
git 冲突问题
1.a修改了README文件,commit(但不push)
2.b也修改了README文件,同时增加了hello.c文件,commit & push了
此时a更新,就会出现冲突,这不仅仅是冲突,而且提交者不正确处理,会出现提交两次hello.c的文件,或者可能还会删掉文件。因为它与SVN不一样,SVN只管提交自己的的修改,保存的是差异化内容;但Git不是这样的,所以需要谨慎处理
解决办法:
a当前应该保持干净的分支(就算有commit也不影响,因为当前状态已包含commit, 当前应该是没有修改或新增)
在a目录下创建前切换分支(同时会把commit的记录保留),意思是把内容先切换过去分支上保存:
git checkout -b test_merge
然后再切回master:
git checkout master
强行重置到master最新状态:
git reset --hard origin/master
再把test_merge合并回来master:
git merge test_merge
此时,先把冲突解决,然后再提交(就不会出现提交2次的情况了)
这个情况在我所在的项目里已经有人多次出现,如果出现类似情况,一定要慎重处理,否则会出现麻烦