Git mergetool生成不需要的.orig文件

[亡魂溺海] 提交于 2020-02-26 23:27:35

当我使用Kdiff3(以及我尝试的其他合并工具)进行合并冲突解决时,我注意到在解析时创建了一个*.orig文件。 有没有办法让它不创建额外的文件?


#1楼

我用它来清理所有以“.orig”结尾的文件:

function git-clean-orig {
    git status -su | grep -e"\.orig$" | cut -f2 -d" " | xargs rm -r
}

如果你是一个scaredy-cat :)你可以离开最后一部分只是为了列出它们(或者如果你想批准每次删除,请不要使用-r ):

function git-show-orig {
    git status -su | grep -e"\.orig$" | cut -f2 -d" "
}

#2楼

来自git config可能解决方案:

git config --global mergetool.keepBackup false

执行合并后,带有冲突标记的原始文件可以保存为扩展名为.orig的文件。
如果此变量设置为false则不保留此文件。
默认为true (即保留备份文件)。

另一种方法是不添加或忽略这些文件,如本gitguru文章所述

git mergetool使用“ .orig ”后缀保存文件的合并冲突版本。
确保在添加和提交合并之前删除它,或者将*.orig添加到.gitignore

Berik建议在评论中使用:

find . -name \*.orig 
find . -name \*.orig -delete

Charles Bailey建议在他的回答中注意内部差异工具设置 ,这些设置也可以生成那些备份文件,无论git设置是什么。

  • kdiff3有自己的设置(参见手册中的“ 目录合并 ”)。
  • 其他工具如WinMerge可以拥有自己的备份文件扩展名(WinMerge: .bak如其手册中所述 )。

所以你也需要重置这些设置。


#3楼

你必须要小心使用kdiff3因为git mergetool可以配置为在合并期间保存.orig文件, kdiff3的默认行为是也可以独立于git mergetool保存.orig备份文件。

您必须确保mergetool备份已关闭:

git config --global mergetool.keepBackup false

并且kdiff3的设置也设置为不创建备份:

Configure/Options => Directory Merge => Backup Files (*.orig)

#4楼

要清楚,正确的git命令是:

git config --global mergetool.keepBackup false

其他两个答案在命令行中都有拼写错误,导致它失败或无法正常工作。


#5楼

除了作为长期解决方案提供的正确答案之外,您可以使用git使用git git clean -f命令为您删除所有不必要的文件,但首先使用git clean --dry-run以确保不会发生任何意外情况。

这样做的好处是可以使用经过测试的Git内置功能,而不是特定于OS / shell的脚本来删除文件。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!