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


当前回答

我只是简单地使用命令

git clean -n *.orig

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

git clean -f *.orig

其他回答

我只是简单地使用命令

git clean -n *.orig

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

git clean -f *.orig

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

git config --global mergetool.keepBackup false

执行合并后,带有冲突标记的原始文件可以保存为扩展名为. trans的文件。 如果这个变量被设置为false,那么这个文件就不会被保存。 默认为true(即保留备份文件)。

另一种选择是不添加或忽略这些文件,正如本文所建议的那样,

Git mergetool用“”保存文件的合并冲突版本。源自”后缀。 确保在添加和提交merge或add *之前删除它。来自你的。gitignore。

Berik在评论中建议使用:

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

Charles Bailey在他的回答中建议,无论git设置是什么,都要注意内部差异工具设置,它也可以生成这些备份文件。

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

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

我用它来清理所有以“。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" "
}

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

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

git config --global mergetool.keepBackup false

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

Configure/Options => Directory Merge => Backup Files (*.orig)
git config --global mergetool.keepBackup false

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