我的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工具。
如果你也想使用它,那么:
-
获得TortoiseMerge/Diff的独立版本(相当旧,因为自2011年7月TortoiseSVN的1.6.7版本以来,它就没有独立发布(。此答案中的链接和详细信息。
-
将
TortoiseIDiff.exe
和TortoiseMerge.exe
解压缩到任何文件夹(在我的情况下为c:Program Files (x86)AtlassianSourceTreeextras
(。 -
在SourceTree中打开
Tools > Options > Diff > External Diff / Merge
。在两个下拉列表中选择TortoiseMerge
。 -
点击
OK
并将SourceTree指向TortoiseIDiff.exe
和TortoiseMerge.exe
的位置。
之后,您可以从本地存储库中每个冲突文件的上下文菜单中选择Resolve Conflicts > Launch External Merge Tool
。这将打开TortoiseMerge,在那里你可以轻松地处理所有的冲突。完成后,只需关闭TortoiseMerge(您甚至不需要保存更改,这可能会自动完成(,几秒钟后SourceTree应该会很好地处理它。
唯一的问题是,即使未选中正确的选项,它也会自动创建备份副本。
当"解决冲突"->"内容"菜单被禁用时,其中一个可能在"挂起的文件"列表中。我们需要从下拉(顶部(中选择冲突文件选项
希望它能帮助