当2个branch都修改了同一个文件的同一部分时,这时,就会发生冲突,git的自动合并就会失败。产生了冲突就需要手工解决。
-
如何解决本地冲突
比如,通过以下方式提交代码:
$ git commit -m “file.txt: needs merge”
如果执行git status会显示这些文件没有合并(unmerged),这些有冲突的文件里面会添加像下面的冲突标识符:
<<<<<<< HEAD:file.txt
Hello world
=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt
你所需要的做是就是编辑解决冲突,(接着把冲突标识符删掉),再执行下面的命令:
$ git addfile.txt
$ gitcommit
注意:提交注释里已经有一些关于合并的信息了,通常是用这些默认信息,但是你可以添加一些你想要的注释。
-
如何解决远端冲突
1.通过以下方式提交代码:
git status
git add file
git commit-m “modified”
git pushorigin master:refs/for/master
--当前本地的分支是 master
--有冲突报失败,则继续按下面处理,否则提交流程成功结束;
2.将远程最新代码下到本地新建分支上master_new
gitcheckout origin/master -b master_new
3.将前面本地第4步 master分支的commit修改应用到当前分支
gitcherry-pick <change-id>
4.人工合并--(具体说明)
5.将解决冲突后的每个文件添加到commit列表中
git add<file>
-- file为解决冲突后的文件
6、重新提交
git commit
或者直接
git commit--amend
提交时一定要把log信息中conflict信息删除,否则,会提示没有change ID
7.重新提交到远端
git pushorigin master_new:refs/for/master
一切OK~~~
作者:Younger Liu,本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。