我正在为我的git项目使用(Windows)SourceTree.我可以在命令提示符或Linux终端中执行此操作.
但是,我想知道是否有一种交互式和视觉上解决冲突的好方法.例如,如果pull检测到冲突,则弹出基于GUI的冲突工具(例如,P4Merge).可能吗?
我总是在做手动冲突解决,这很痛苦.
例如,这是pull
来自SourceTree 的git 消息.
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.
gtrig.. 129
从SourceTree中,单击工具 - >选项.然后在"常规"选项卡上,确保选中该框以允许SourceTree修改您的Git配置文件.
然后切换到"Diff"选项卡.在下半部分,使用下拉菜单选择要用于执行差异和合并的外部程序.我已经安装了KDiff3并且很喜欢它.完成后,单击"确定".
现在有合并时,您可以进入操作 - >解决冲突 - >启动外部合并工具.
从SourceTree中,单击工具 - >选项.然后在"常规"选项卡上,确保选中该框以允许SourceTree修改您的Git配置文件.
然后切换到"Diff"选项卡.在下半部分,使用下拉菜单选择要用于执行差异和合并的外部程序.我已经安装了KDiff3并且很喜欢它.完成后,单击"确定".
现在有合并时,您可以进入操作 - >解决冲突 - >启动外部合并工具.
我正在使用SourceTree和TortoiseMerge/Diff,这是一个非常简单和方便的差异/合并工具.
如果您也想使用它,那么:
获取TortoiseMerge/Diff的独立版本(相当陈旧,因为它自TortosieSVN版本1.6.7起不再独立发布,自2011年7月起).本答案中的链接和详细信息.
解压TortoiseIDiff.exe
并TortoiseMerge.exe
到任何文件夹(c:\Program Files (x86)\Atlassian\SourceTree\extras\
在我的情况).
在SourceTree中打开Tools > Options > Diff > External Diff / Merge
.TortoiseMerge
在两个下拉列表中选择.
打OK
和点SourceTree你的位置TortoiseIDiff.exe
和TortoiseMerge.exe
.
之后,您可以Resolve Conflicts > Launch External Merge Tool
从本地存储库中每个冲突文件的上下文菜单中进行选择.这将打开TortoiseMerge,在那里你可以轻松应对所有的冲突.完成后,只需关闭TortoiseMerge(您甚至不需要保存更改,这可能会自动完成),几秒钟后SourceTree应该优雅地处理它.
唯一的问题是,它会自动创建备份副本,即使未选中正确的选项也是如此.