“git mergetool”做了什么,选择合并工具的工作是什么。谁负责自动合并和文件清理?

时间:2016-04-18 16:22:38

标签: git merge

当我遇到冲突时,我会使用“git mergetool”来帮助合并它们。但是,当我这样做时会发生什么似乎取决于我的环境,或者可能是mergetool;我很惊讶看到mergetool看起来有多大差异。

有时mergetool会在我运行mergetool时自动合并大部分/全部更改,工具只是说文件X是自动登记的,并且可能让我看到合并的文件来验证它;只有少数文件要求我做出合并决定。其他时候,我似乎被提示甚至容易合并的问题,如更新pom中的版本号。

有时在进行合并时,我会看到<<<<<<<< HEAD和<<<<<<< REMOTE语法,其他时候合并工具将显示更具视觉吸引力的语法。

有时我会在运行mergetool和合并后得到.orig或.remote文件,有时候它们似乎被清理并删除了。

我想弄清楚为什么会有这样的差异。 git是否会让mergetools完成所有这些操作?当我选择合并工具时,我选择的不仅仅是一种可视化冲突的方式,还有一种自动合并和清理文件的方法?或者这些步骤配置不同?例如,我可以在看到与其他工具的冲突时获得自动合并曲折svn使用程度吗?

最相关的基础是,如果我在Linux世界中,如何在没有我介入的情况下获得一个可以自动合并明显变化的工具,这些工具我还没有玩过(例如meld) )似乎这样做,我需要寻找一个特定的工具,还是可以单独配置?

1 个答案:

答案 0 :(得分:1)

最相关的是,如果我在linux世界中,如何获得一种无需我干预即可自动合并明显更改的工具,而我以前没有使用过任何mergetools(例如meld) )似乎可以

实际上,在Git 2.29(2020年第四季度)中,“ git mergetool”的“融合”后端man学会了赋予底层的'{{1 }}'''meld'选项,这将有助于减少需要手动合并的文本量。

请参见commit dbd8c09Lin Sun (sunlin7)(2020年5月7日)。
(由Junio C Hamano -- gitster --commit 4aff18a中合并,2020年9月22日)

mergetool:允许--auto-merge的{​​{1}}遵循auto-merge行为

帮助:ĐoànTrầnCôngDanh
帮助人:戴维·阿吉拉尔(David Aguilar)
签名人:孙琳

meld后端使用的vim-diff的行为与“ mergetool”类似,方法是让{{1}时自动合并不冲突的部分并突出显示冲突的部分}}配置有meldvimdiff,用于自动检测mergetool.meld.useAutoMerge选项。

true现在包含在其man page中:

auto

给定--auto-merge时,meld将合并所有非冲突的 零件自动突出显示有冲突的零件并等待 用户决定。将git config设置为mergetool.meld.useAutoMerge会告诉 Git可以将--auto-merge选项与mergetool.meld.useAutoMerge无条件地结合使用。 将此值设置为true可以使git检测--auto-merge是否 受支持,并且仅在可用时使用meld。一种 值auto避免完全使用--auto-merge,它是 默认值。