如何以交互方式(直观地)解决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,这是非常容易和方便的差异/合并工具。
如果你想使用它,那么:
-
获得独立版本的TortoiseMerge / Diff(相当古老,因为它自从2011年7月起,从TortosieSVN版本1.6.7开始不能独立运行)。 这个答案中的链接和详细信息。
-
将
TortoiseIDiff.exe
和TortoiseMerge.exe
解压到任何文件夹(在我的情况下是c:\Program Files (x86)\Atlassian\SourceTree\extras\
)。 -
在SourceTree中打开
Tools > Options > Diff > External Diff / Merge
。 在这两个下拉列表中selectTortoiseMerge
。 -
点击
OK
并将SourceTree指向您的位置TortoiseIDiff.exe
和TortoiseMerge.exe
。
之后,您可以从本地存储库中每个冲突文件的上下文菜单中selectResolve Conflicts > Launch External Merge Tool
。 这将打开TortoiseMerge,在那里你可以轻松处理所有的冲突,你有。 一旦完成,只需closuresTortoiseMerge(你甚至不需要保存更改,这可能会自动完成),并在几秒钟后SourceTree应该优雅地处理。
唯一的问题是,它会自动创build备份副本,即使正确的选项未选中 。
解决冲突 – >内容菜单被禁用时,可能会在待处理文件列表中。 我们需要从下拉列表中select冲突文件选项(上图)
希望能帮助到你
- File.separator与FileSystem.getSeparator()与System.getProperty(“file.separator”)?
- 如何pipe理客户端的JavaScript依赖关系?