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

我正在使用(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.
252056 次浏览

在 SourceTree 中,单击 Tools-> Options。然后在“ General”选项卡上,确保勾选允许 SourceTree 修改 Git 配置文件的复选框。

然后切换到“ Diff”选项卡。在下半部分,使用下拉菜单选择您想要用来完成差分和合并的外部程序。我已经安装了 凯迪夫3并且非常喜欢它。完成后,单击 OK。

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

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

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

  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。在两个下拉列表中选择 TortoiseMerge

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

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

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

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

希望能有所帮助