如何在SourceTree/git中以交互方式(可视化)解决冲突

139
我正在使用(Windows)SourceTree进行git项目管理。我可以在命令提示符或Linux终端中操作。
但是,我想知道是否有一种交互式和视觉化的方式来解决冲突。例如,如果pull检测到冲突,弹出一个基于GUI的冲突工具(如P4Merge)。这种方法可行吗?
我一直在手动解决冲突,这非常痛苦。
例如,这是来自SourceTree的git pull消息。
git -c diff.mnemonicprefix=false -c core.quotepath=false pull --no-commit origin master
From W:\repo\
 * branch            master     -> FETCH_HEAD   

Updating 33c07bf..41e0249

error: Your local changes to the following files would be overwritten by merge:
    foo.cpp
    goo.cpp
    goo.hpp
Please, commit your changes or stash them before you can merge.
Aborting    

Completed with errors, see above.
3个回答

157

从SourceTree中,点击工具->选项。然后在“常规”选项卡上,确保勾选允许SourceTree修改您的 Git 配置文件的复选框。

然后切换到“Diff”选项卡,下半部分使用下拉菜单选择要用于diff和合并的外部程序。我安装了KDiff3并且很喜欢它。完成后,点击确定。

现在当有合并冲突时,您可以转到操作->解决冲突->启动外部合并工具。


5
我尝试过这个方法,但最终没有看到Beyond Compare被启动。我只看到生成了比较文件,但无法解决冲突。改成标准/默认的比较方式似乎也没有帮助。 - Echiban
1
@echiban,你可能使用的是Beyond Compare的标准许可证,不支持三方合并。你需要升级到专业版才能将其用作git合并工具。 - pierdevara
11
在遵循了所有配置“启动外部合并工具”的步骤之后,它对我仍然是灰色的,没有办法激活它。 - pal4life
2
另外,我没有选择合并冲突文件,一旦我这样做了,它就没问题了。 - pal4life
2
在提交列表中,我必须点击“未提交的更改”项目,然后它才会变成非灰色状态。 - Micah Zoltu
显示剩余4条评论

13

我正在使用SourceTree与TortoiseMerge/Diff一起使用,这是一个非常简单方便的差异/合并工具。

如果您也想使用它,请按照以下步骤进行操作:

  1. 获取单独的TortoiseMerge/Diff版本(相当老,因为自TortosieSVN 1.6.7版本(即2011年7月)以来不再独立发行)。链接和详细信息在此答案中。

  2. TortoiseIDiff.exeTortoiseMerge.exe解压到任何文件夹中(在我的情况下是c:\Program Files (x86)\Atlassian\SourceTree\extras\)。

  3. 在SourceTree中打开Tools > Options > Diff > External Diff / Merge。在两个下拉列表中都选择TortoiseMerge

  4. 点击OK,然后将SourceTree指向您的TortoiseIDiff.exeTortoiseMerge.exe位置。

完成之后,您可以从本地存储库中每个有冲突的文件的上下文菜单中选择Resolve Conflicts > Launch External Merge Tool。这将打开TortoiseMerge,您可以轻松处理所有冲突。完成后,只需关闭TortoiseMerge(甚至无需保存更改,这可能会自动完成),几秒钟后SourceTree应该会优雅地处理。

唯一的问题是,它会自动创建备份副本,即使选项未勾选


5
当“解决冲突-〉内容菜单”被禁用时,可能会出现待处理文件列表。我们需要从下拉菜单(顶部)中选择“冲突文件”选项。希望这能帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接