当我使用Kdiff3(以及我尝试的其他合并工具)进行合并冲突解决时,我注意到在解析时创建了*.orig
文件。有没有办法让它不创建额外的文件?
答案 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设置如何,都可以生成这些备份文件。
.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文件的选项
答案 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
中的mergetool.keepTemporaries=false
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