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

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

git config可能的解决scheme:

 git config --global mergetool.keepBackup false 

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

另一种方法是不添加或忽略这些文件,正如在这个gitguru文章中所build议的那样 ,

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

贝里克 在评论中build议使用:

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

Charles Bailey在他的回答中build议要注意内部diff工具设置 ,这些设置也可以生成这些备份文件,不pipe是什么git设置。

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

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

你必须小心使用kdiff3因为git mergetool可以configuration为在合并时保存一个.orig文件, kdiff3的默认行为是独立于git mergetool保存一个.orig备份文件。

您必须确保mergetool备份已closures:

 git config --global mergetool.keepBackup false 

而且kdiff3的设置被设置为不创build备份:

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

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

 git config --global mergetool.keepBackup false 

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

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

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

如果你是一个吓人的猫:)你可以离开最后一部分,只是列出它们(或者如果你想批准每个删除,离开-r ):

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

通过configurationKDiff3可以禁用保存.orig文件的选项

KDiff3备份文件.orig选项

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

这有一个好处,就是使用Git的testing内置function,通过特定于您的OS / shell的脚本来删除这些文件。

 git config --global mergetool.keepBackup false 

这应该比Beyond Compare(as mergetool)也适用

我只是使用该命令

 git clean -n *.orig 

检查,以确保只有文件,我想删除列出然后

 git clean -f *.orig 

视窗:

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