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

时间:2013-05-28 19:50:45

标签: git git-merge merge-conflict-resolution atlassian-sourcetree

我正在为我的git项目使用(Windows)SourceTree。我可以在命令提示符或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 个答案:

答案 0 :(得分:124)

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

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

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

答案 1 :(得分:10)

我正在使用SourceTree以及TortoiseMerge / Diff,这是一种非常简单易用的差异/合并工具。

如果您也想使用它,那么:

  1. 获取TortoiseMerge / Diff的独立版本(相当古老,因为它自TortosieSVN版本1.6.7以来不再独立发布,自2011年7月起)。链接和详细信息in this answer

  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的位置。

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

    唯一的问题是,它会自动创建备份副本,即使是proper option is unchecked

答案 2 :(得分:4)

当“解决冲突” - >“内容”菜单被禁用时,可能会在“待处理文件”列表中。我们需要从下拉列表中选择“冲突的文件”选项(顶部)

希望有所帮助