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

【字号: 日期:2023-10-11浏览:50作者:雯心

问题描述

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

cd ~mkdir democd demogit initgit status // on branch masterecho 'first line ' >> index.txt git add . && git commit -m 'first head'git status // on branch mastergit branch // * mastergit branch devgit checkout devgit branch // * dev ,master ls // index.txtecho '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.txtgit add . && git commit -m '2'开始合并dev 到master报错

git merge dev Auto-merging index.txtCONFLICT (content): Merge conflict in index.txtAutomatic merge failed; fix conflicts and then commit the result.git diff // on master

git diff index.txtdiff --cc index.txtindex 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 <<<<<<< HEADsec line on branch master=======sec line in dev >>>>>>> dev

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

问题解答

回答1:

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

回答2:

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

有两个思路:

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

用 git rebase

回答3:

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

回答4:

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

回答5:

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

回答6:

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

相关文章: