合并工具创建的.orig文件的目的是什么?

时间:2017-06-10 16:56:36

标签: git mergetool

Documentation未说明默认情况下创建.orig文件的原因。此外,它们在下一次合并后的内容未定义。但是,默认情况下必须创建它们。

我最好的猜测是,当存在现有的.orig文件时(而不是重复合并),纠正失败的合并很常见并且也更容易,但显然大多数用户不知道如何处理它们。

3 个答案:

答案 0 :(得分:1)

默认情况下,它们不是创建,而是默认情况下它们被遗忘。在运行您选择作为合并工具的命令之前,git mergetool命令始终将冲突标记化文件复制到.orig

git mergetool命令创建它们的真正原因是它可以将所谓合并文件上的日期戳与.orig文件上的日期戳进行比较最近创建。

假设git mergetool运行的命令,据说合并了三个基本本地(HEAD / --ours)和远程(--theirs)文件,实际上什么也没做一点都不例如,假设您选择了命令true,这是一个简单成功的无操作。在这种情况下,命令未写入的“合并”文件具有{em>相同的时间戳,当git mergetool成功时。同时,.orig文件也具有与git mergetool创建时相同的时间戳。这向git mergetool表明您选择的合并工具实际上失败了,并且文件实际上并未实际合并。但是,如果所谓的合并文件 .orig文件更新,那么您选择的命令必须已写入文件,因此它现在可能以您想要的方式合并。 / p>

git mergetool命令有一个单独的配置旋钮,“信任退出代码”,旨在用于同一目的:尝试确定该工具是否实际合并了它使用这两个技巧来决定是否运行git add。对于git mergetool知道的合并工具,它有一个内置的“信任退出代码”设置。显然,{{1命令是一个糟糕的合并工具,并没有内置。)

如果我们将问题修改为:为什么true默认会遗漏git mergetool文件?那么我们必须问.orig的作者为什么他们选择默认。只有他们真的知道。我们可以推测:也许是因为git mergetool,如果合并仍在继续,它可以重新创建冲突,当时不作为命令存在。也许是因为他们认为这是更方便的默认值:git checkout -m比运行rm *.orig更容易。但事实是,我确实不确定。

答案 1 :(得分:0)

如果我没错,那么当文件发生冲突时,为了能够看到发生的事情,只需查看文件中的文件即可您尝试合并的分支在某些情况下是不够的,因此orig文件就是分支发散点的文件(这样您就可以看到所涉及的两个分支的差异)。

答案 2 :(得分:0)

它们是来自不成功合并的备份文件。扩展程序来自程序patch;查找" .orig"在手册中。