如何以交互方式(直观地)解决SourceTree / git中的冲突

我使用(Windows)SourceTree为我的git项目。 我可以在命令提示符或Linuxterminal中执行。

但是,我想知道是否有一个很好的方式来交互和直观地解决冲突。 例如,如果pull检测到冲突,则popup基于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修改您的Gitconfiguration文件。

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

现在,当合并时,您可以在“操作”>“解决冲突”>“启动外部合并工具”下进行操作。

我使用SourceTree和TortoiseMerge / Diff,这是非常容易和方便的差异/合并工具。

如果你想使用它,那么:

  1. 获得独立版本的TortoiseMerge / Diff(相当古老,因为它自从2011年7月起,从TortosieSVN版本1.6.7开始不能独立运行)。 这个答案中的链接和详细信息。

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

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

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

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

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

解决冲突 – >内容菜单被禁用时,可能会在待处理文件列表中。 我们需要从下拉列表中select冲突文件选项(上图)

希望能帮助到你