合并冲突解决方案

Chr*_*alo 57 git user-interface merge-conflict-resolution

当Git中存在合并冲突时,会将以下垃圾插入冲突文件中.三个问题:

  1. 你怎么看这些注释?
  2. 修复这些合并冲突时有哪些策略可供使用?
  3. 是否有适用于Mac的GUI工具,它知道如何阅读这些文件并并排显示两个版本,以便更容易解决问题?

在此输入图像描述

注意:如果它是相关的,我使用的是GitHub的Mac GUI客户端.

Sim*_*ter 36

介于<<<<<<和之间的所有内容======都来自HEAD修订,这是在开始合并操作之前的已提交状态(git merge如果树是脏的,则会抱怨,因此它应该等同于您的工作目录).

======和之间的部分>>>>>>来自合并的版本.之后的文本>>>>>>是引入冲突更改的提交的注释.

存在冲突标记意味着该部分文件的基本版本与"新"版本不同.未显示基本版本(最后一个共同祖先).

如果你想要一个更舒适的合并并有一个GUI可用,我建议你看看kdiff3.


Chr*_*alo 21

现在有一种比尝试读取Git插入文件的乱码标记更好的解决方案.Kaleidoscope 2,Black Pixel的diff工具的第二个版本,现在也是一个合并工具.它不是免费的,但它的工作效果非常好.

安装Kaleidoscope 2后,与Git集成非常简单.打开Kaleidoscope并从菜单栏中选择Kaleidoscope > Integration ...

Kaleidoscope的集成菜单选项.

然后你会看到这个窗口.只需从左侧导航栏中选择Git,然后安装ksdiff命令行工具,然后制作Kaleidoscope Git的默认差异和合并工具.

Kaleidoscope的Git Integration对话框.

最后,一旦你在Git中发生合并冲突,只需转到命令行并执行即可git mergetool.现在冲突很容易理解.请享用.

合并冲突的Kaleidoscope理智视图.

  • 我想知道如何通过Kaleidoscope标记解决 (2认同)

spa*_*row 16

<<<< HEAD #Where the conflict starts

#Previous Revision

========== # The point where things look iffy

#Things that changed

>>>>> New Commit # Point where the conflict ends
Run Code Online (Sandbox Code Playgroud)

Mac的Xcode附带FileMerge,可以在命令行上访问opendiff.

git mergetool -t opendiff

  • 如果#Things没有变化,但是我仍然有冲突,这意味着什么? (2认同)