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文件的选项
除了作为长期解决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
视窗:
- 在文件
Win/Users/HOME/.gitconfig
设置mergetool.keepTemporaries=false
- 在文件
git/libexec/git-core/git-mergetool
,在函数cleanup_temp_files()
的else块中添加rm -rf -- "$MERGED.orig"
。