Git合并工具会生成不需要的. trans文件

当我做一个合并冲突解决与Kdiff3(和其他合并工具我尝试),我注意到解决*.orig文件被创建。有没有办法让它不创建额外的文件?

140074 次浏览

git config中的一个可能的解决方案:

git config --global mergetool.keepBackup false

执行merge操作后,可以将有冲突标记的原始文件保存为扩展名为.orig的文件 如果这个变量被设置为false,那么这个文件将不被保留 默认为true(即保留备份文件)

另一种方法是不添加或忽略这些文件,正如gitguru文章所建议的,

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

Berik语建议使用在评论中:

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

查尔斯·贝利建议在他的回答中注意内部差异工具设置,无论git设置是什么,它也可以生成这些备份文件。

  • kdiff3有自己的设置(参见手册中的“目录合并”)。
  • 其他工具,如WinMerge可以有自己的备份文件扩展名(WinMerge: .bak,正如在它的手册中提到的那样)。

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

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

你必须确保mergetool备份是关闭的:

git config --global mergetool.keepBackup false

另外,kdiff3的设置设置为不创建备份:

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

需要明确的是,正确的git命令是:

git config --global mergetool.keepBackup false

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

我用它来清理所有以“。trans”结尾的文件:

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" "
}

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

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

保存. trans文件的选项可以通过配置KDiff3禁用

KDiff3备份文件. trans option . 0 .

git config --global mergetool.keepBackup false

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

窗口:

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

我只是简单地使用命令

git clean -n *.orig

检查,以确保只有我想删除的文件被列出 < / p >

git clean -f *.orig

或者只是加上

* .orig

致你的全球gitignore

如果你在Windows机器上工作,你可以用这个命令关闭备份

git config --global mergetool.keepBackup false

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

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