如何交互(直观)解决SourceTree/Git中的冲突?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (41)

我正在使用(Windows)SourceTree作为我的Git项目。我可以在命令提示符或Linux终端中完成。

但是,我想知道是否有一个很好的方法来交互和直观地解决冲突。例如,如果拉检测到冲突,就会弹出一个基于GUI的冲突工具(例如,P4Merge)。有可能吗?

例如,这是一个git。pull消息,来自SourceTree。

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中,单击Tools->Options。然后在“General”选项卡上,确保选中该复选框以允许SourceTree修改Git配置文件。

然后切换到“diff”选项卡。在下半部分,使用下拉菜单选择要用于执行差异和合并的外部程序。完成后,单击OK。

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

用户回答回答于

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

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

  1. 获得独立版本的TortoiseMerge/diff(相当旧,因为它自2011年7月版本1.6.7版TortosieSVN以来就没有单独发布)。
  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(您甚至不需要保存更改,这可能会自动完成),几秒钟后,SourceTree应该会优雅地处理这个问题。

扫码关注云+社区