当我做一个合并冲突解决与Kdiff3(和其他合并工具我尝试),我注意到解决*.orig文件被创建。有没有办法让它不创建额外的文件?
*.orig
git config中的一个可能的解决方案:
git config
git config --global mergetool.keepBackup false
执行merge操作后,可以将有冲突标记的原始文件保存为扩展名为.orig的文件 如果这个变量被设置为false,那么这个文件将不被保留 默认为true(即保留备份文件)
.orig
false
true
另一种方法是不添加或忽略这些文件,正如gitguru文章所建议的,
git mergetool保存后缀为“.orig”的文件的合并冲突版本 请确保在添加和提交合并之前删除它,或者将*.orig添加到.gitignore中
git mergetool
.gitignore
Berik语建议使用在评论中:
find . -name \*.orig find . -name \*.orig -delete
查尔斯·贝利建议在他的回答中注意内部差异工具设置,无论git设置是什么,它也可以生成这些备份文件。
.bak
所以你也需要重新设置这些设置。
使用kdiff3时必须小心一点,因为git mergetool可以配置为在合并期间保存.orig文件,kdiff3的默认行为是独立于git mergetool保存.orig备份文件。
kdiff3
你必须确保mergetool备份是关闭的:
mergetool
另外,kdiff3的设置设置为不创建备份:
Configure/Options => Directory Merge => Backup Files (*.orig)
需要明确的是,正确的git命令是:
其他两个答案在命令行中都有拼写错误,这将导致它失败或不能正常工作。
我用它来清理所有以“。trans”结尾的文件:
function git-clean-orig { git status -su | grep -e"\.orig$" | cut -f2 -d" " | xargs rm -r }
如果你是一个胆小的人,你可以省略最后一部分,只是列出它们(或者如果你想批准每次删除,可以省略-r):
-r
function git-show-orig { git status -su | grep -e"\.orig$" | cut -f2 -d" " }
除了作为长期解决方案提供的正确答案外,您还可以使用git使用git clean -f命令一次性删除所有不必要的文件,但首先使用git clean --dry-run以确保不会发生意外情况。
git clean -f
git clean --dry-run
这样做的好处是使用Git的测试内置功能,而不是特定于OS/shell的脚本来删除文件。
保存. trans文件的选项可以通过配置KDiff3禁用
. 0 .
这应该也适用于Beyond Compare(作为mergetool)
窗口:
Win/Users/HOME/.gitconfig
mergetool.keepTemporaries=false
git/libexec/git-core/git-mergetool
cleanup_temp_files()
rm -rf -- "$MERGED.orig"
我只是简单地使用命令
git clean -n *.orig
检查,以确保只有我想删除的文件被列出 < / p >
git clean -f *.orig
或者只是加上
* .orig
致你的全球gitignore
如果你在Windows机器上工作,你可以用这个命令关闭备份
如果不想这样做,可以使用powershell命令轻松删除所有.orig文件
ls -Recurse C:\path\to\repository\*.orig | rm