合并冲突解决
当Git发生合并冲突时,类似下面的垃圾被插入到冲突的文件中。 三个问题:
- 你如何阅读这些注释?
- 解决这些合并冲突时有什么策略可以使用?
- 是否有一个Mac的graphics用户界面工具,知道如何阅读这些文件,并排显示这两个版本,使其更容易解决这个问题?
注意:如果相关,我使用的是GitHub的Mac GUI客户端。
<<<<<<
和======
之间的所有东西都来自HEAD
修订版,这是开始合并操作之前的提交状态(如果树很脏, git merge
会抱怨,所以它应该等同于你的工作目录)。
======
和>>>>>>
之间的部分来自正在合并的版本。 >>>>>>
之后的文本是引入冲突变更的提交的注释。
有冲突标记意味着这部分文件的基本版本不同于“新”版本。 基本版本(最后的共同祖先)没有显示。
如果你想要一个更舒适的合并,并有一个graphics用户界面,我build议你看看kdiff3。
现在有一个比试图阅读Git插入到文件中的乱码标记更好的解决scheme。 万花筒2 ,黑色像素的第二个版本的diff工具,现在也是一个合并工具。 这不是免费的,但它的作品非常漂亮。
安装万花筒2后,与Git集成非常简单。 打开万花筒,从菜单栏中select万花筒 > 集成…
然后你会看到这个窗口。 只需从左侧导航栏中selectGit ,然后安装ksdiff
命令行工具,然后制作Kaleidoscope Git的默认差异和合并工具。
最后,一旦在Git中发生合并冲突,只需转到命令行并执行git mergetool
。 现在冲突很容易阅读。 请享用。
<<<< 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
您可以configuration(graphics)合并工具,并使用该工具来解决冲突。
也看看git mergetool
命令 – 如果你有一个预定义的工具安装或configuration了一些其他的工具,它会打开工具的解决schemehttp://schacon.github.com/git/git- mergetool.html
如果您对GUI工具感兴趣,您不必担心这些符号的真实含义,因为GUI工具将帮助您轻松制作分辨率。 只要明白用=====
和>>>>>
标记的部分就是冲突部分。