首页 > git merge dev 分支合并到master 如何解决冲突

git merge dev 分支合并到master 如何解决冲突

使用git 分支合并到master主线,但因为同时修改一个文件,导致合并之后文件多出了很多<<<HEAD 这样的!如何解决冲突?一定要手动编辑冲突文件,去掉那些 <<<HEAD >>>DEV再提交吗?

cd ~
mkdir demo
cd demo
git init
git status // on branch master
echo "first line " >> index.txt 
git add . && git commit -m "first head"
git status // on branch master
git branch // * master
git branch dev
git checkout dev
git branch // * dev ,master 
ls // index.txt
echo "sec line in dev" >> index.txt 
git add . && git commit -m "in branch dev"
git checkout master 
git status // on branch master 
echo "sec line on branch master" >> index.txt
git add . && git commit -m "2"

开始合并dev 到master报错

git merge dev 
Auto-merging index.txt
CONFLICT (content): Merge conflict in index.txt
Automatic merge failed; fix conflicts and then commit the result.

git diff // on master

git diff index.txt
diff --cc index.txt
index dda3583,8fa96cd..0000000
--- a/index.txt
+++ b/index.txt
@@@ -1,2 -1,2 +1,6 @@@
  first line 
++<<<<<<< HEAD
 +sec line on branch master
++=======
+ sec line in dev 
++>>>>>>> dev

文件 index.txt 全部内容,在master分支下

first line 
<<<<<<< HEAD
sec line on branch master
=======
sec line in dev 
>>>>>>> dev

合并dev 到master,结果这个文件出现了 <<< HEAD >>> dev 这样的,如何将他们合并成功?非得手动去编辑,再提交吗?


有冲突肯定要手动编辑的!这个问题一般出现在多人团队中!解决冲突的时候尽量和队友一块!


是的,因为你改动了同样的地方,所以需要手动解决冲突,只要把标记出的位置合并为一处代码就行了。或者你可以用cherry-pick或rebase来防止某些冲突


建议使用p4merge等可视化diff工具,另外只要开发者使用git都符合规范,是不会出现合并master冲突的,建议加强对开发者的培训,规范化使用git,目前我这边使用的是git-flow


如果是确定可以合并(比如,分支代码没有问题时)时 merge 了产生冲突,那么手动处理是必须的。当然,在 master 上处理冲突是很蛋疼的。所以需要别的方法。

有两个思路:

  1. 用 master 去 merge dev 分支,这样冲突就发生在 dev 分支下,手动解决好之后再合并回 master 就是一个 fast-forward 而已;

  2. 用 git rebase


虽然命令行工具很强大,但是在理解了原理后使用可视化工具还是很方便的,特别是解决冲突的时候。
当出现了这样的冲突的时候,手动去解决确实要比较仔细。利用可视化工具,可以方便的查看冲突的地方、快捷的在各个冲突点跳转,解决大多数冲突也只需要点击几次鼠标即可。
推荐命令行结合可视化工具来使用git,比较好的可视化工具有TortoiseGit


一般用master分支合并dev分支,实际解决的冲突是在dev上的,建议仔细看冲突差异,以免影响别人的代码。

【热门文章】
【热门文章】