当Git中出现合并冲突时,会将以下垃圾插入冲突的文件中。三个问题:
注意:如果相关,我使用的是GitHub的Mac GUI客户端。
答案 0 :(得分:35)
<<<<<<
和======
之间的所有内容都来自HEAD
修订版,这是在开始合并操作之前的已提交状态(git merge
会在树变脏时抱怨,所以它应该等同于你的工作目录。)
======
和>>>>>>
之间的部分来自要合并的版本。 >>>>>>
之后的文本是引入冲突更改的提交的注释。
存在冲突标记意味着该部分文件的基本版本与“新”版本不同。基本版本(最后一个共同祖先)未显示。
如果你想要一个更舒适的合并并有一个GUI可用,我建议你看看kdiff3。
答案 1 :(得分:21)
现在有一种比尝试读取Git插入文件的乱码标记更好的解决方案。 Black Pixel的diff工具的第二个版本Kaleidoscope 2现在也是一个合并工具。它不是免费的,但它的工作效果非常好。
安装Kaleidoscope 2后,与Git集成非常简单。打开Kaleidoscope,然后从菜单栏中选择 Kaleidoscope &gt;的集成... 强>
然后你会看到这个窗口。只需从左侧导航栏中选择 Git ,然后安装ksdiff
命令行工具,然后制作Kaleidoscope Git的默认差异和合并工具。
最后,一旦你在Git中发生合并冲突,只需转到命令行并执行git mergetool
。现在冲突很容易理解。享受。
答案 2 :(得分:16)
<<<< HEAD #Where the conflict starts
#Previous Revision
========== # The point where things look iffy
#Things that changed
>>>>> New Commit # Point where the conflict ends
Mac的Xcode附带FileMerge,可以使用opendiff
在命令行上访问。
git mergetool -t opendiff
答案 3 :(得分:4)
您可以配置(图形)合并工具并使用该工具进行冲突解决。
另请查看git mergetool
命令 - 如果您安装了某个预定义工具或已配置其他工具,则会打开解决方案http://schacon.github.com/git/git-mergetool.html的工具
如果您对GUI工具感兴趣,则无需担心符号的真正含义,因为GUI工具可帮助您轻松制作分辨率。只需了解标有=====
和>>>>>
的部分就是冲突部分。
答案 4 :(得分:0)
当您有两个分支对同一文件进行更改并尝试合并它们时,将发生合并冲突。要查看冲突文件列表,请在终端上运行git status
。
文件的冲突行将标有可视指示符:
<<<<<
- 冲突在此行之后开始。
=====
- 从HEAD和merging_branch改变Devides。
>>>>>
- 冲突线的结束。
<<<<<<< HEAD
conflicted text from HEAD
=======
conflicted text from merging_branch
>>>>>>> merging_branch
当您修复冲突的文件并准备合并时,您所要做的就是运行git add
和git commit
来生成合并提交。提交后,git push
对分支进行更改。
参考文章:Git merge。