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

时间:2009-08-09 16:25:26

标签: git version-control

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

11 个答案:

答案 0 :(得分:687)

来自git config的可能解决方案:

git config --global mergetool.keepBackup false
  

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

替代方法是不添加或忽略这些文件,如gitguru article中所述,

  

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

Berik建议使用in the comments

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

Charles Bailey建议his answer注意内部差异工具设置,无论git设置如何,都可以生成这些备份文件。

  • kdiff3有自己的设置(请参阅手册中的“Directory merge”)。
  • 其他工具(如WinMerge)可以拥有自己的备份文件扩展名(WinMerge:.bak,如its manual中所述)。

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

答案 1 :(得分:74)

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

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

git config --global mergetool.keepBackup false

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

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

答案 2 :(得分:32)

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

git config --global mergetool.keepBackup false

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

答案 3 :(得分:30)

可以通过配置KDiff3

来禁用保存.orig文件的选项

KDiff3 Backup file .orig option

答案 4 :(得分:25)

我用它来清理所有以“.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" "
}

答案 5 :(得分:10)

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

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

答案 6 :(得分:9)

我只是使用命令

git clean -n *.orig

检查以确保仅列出我要删除的文件 然后

git clean -f *.orig

答案 7 :(得分:3)

git config --global mergetool.keepBackup false

这应该适用于Beyond Compare(作为mergetool)

答案 8 :(得分:2)

或仅添加

*。orig

到您的全局gitignore

答案 9 :(得分:0)

视窗:

    文件Win/Users/HOME/.gitconfig中的
  1. 设置mergetool.keepTemporaries=false
  2. 在文件git/libexec/git-core/git-mergetool中,在函数cleanup_temp_files()中添加rm -rf -- "$MERGED.orig"在else块中。

答案 10 :(得分:0)

如果您在 Windows 机器上工作 - 您可以使用此命令关闭备份

git config --global mergetool.keepBackup false

如果您不想这样做,您可以使用此 powershell 命令轻松删除所有 .orig 文件

ls -Recurse C:\path\to\repository\*.orig | rm