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



我的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.

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

然后切换到"Diff"选项卡。在下半部分,使用下拉菜单选择要用于进行Diff和合并的外部程序。我已经安装了KDiff3,并且非常喜欢它。完成后,单击"确定"。

现在,当有合并时,您可以进入Actions(操作(->Resolve Conflicts(解决冲突(->Launch External merge Tool(启动外部合并工具(。

我正在使用SourceTree和TortoiseMerge/Diff,这是一个非常简单方便的Diff/merge工具。

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

  1. 获得TortoiseMerge/Diff的独立版本(相当旧,因为自2011年7月TortoiseSVN的1.6.7版本以来,它就没有独立发布(。此答案中的链接和详细信息。

  2. TortoiseIDiff.exeTortoiseMerge.exe解压缩到任何文件夹(在我的情况下为c:Program Files (x86)AtlassianSourceTreeextras(。

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

  4. 点击OK并将SourceTree指向TortoiseIDiff.exeTortoiseMerge.exe的位置。

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

唯一的问题是,即使未选中正确的选项,它也会自动创建备份副本。

当"解决冲突"->"内容"菜单被禁用时,其中一个可能在"挂起的文件"列表中。我们需要从下拉(顶部(中选择冲突文件选项

希望它能帮助

最新更新