如何从git存储库合并后删除.orig文件?

max*_*s ツ 145 git

一些如何在合并期间在我的git存储库中检查.orig文件,这些文件现在显示在已修改和未跟踪的扇区中.但我不想在我的存储库中存在这个文件.怎么做.

    modified:   Gemfile.lock.orig
    #   modified:   Gemfile.orig
    #   modified:   app/assets/images/bg_required.png.orig
    #   modified:   app/assets/javascripts/application.js.orig

    etc...
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

The*_*era 225

在这种情况下,最好的解决方案是保持简单,并独立于git摆脱这些文件:

cd /your/repo/directory
find . -name '*.orig' -delete 
Run Code Online (Sandbox Code Playgroud)

  • 如果出现谓词错误,请使用:find.-name'*.orig'| xargs rm -f (13认同)
  • 痛苦的是,git clean -df不能做到这一点.我们为什么要手动清理它留下的垃圾? (8认同)
  • @Panzercrisis如果你使用Windows,你可能已经有了一个终端模拟器,通过它可以与Git连接.我会推荐"gitforwindows",它包含BASH和所有其他常用工具. (2认同)
  • 每当我刚刚完成了一次大而混乱的合并并且有一堆 .orig 闲置时,我每月至少会搜索并返回一次这个答案。 (2认同)

Ama*_*mar 145

尝试git clean更多信息,您可以在这里这里找到

  • `git clean -i`非常好.它将为您提供一个将被删除的文件列表,并为您提供有关如何处理列表的选项(过滤列表,能够删除列表中的所有内容以及其他一些选项). (45认同)
  • 我认为这是一个比标记为答案更好的解决方案. (4认同)
  • 您可以使用带有模式的 git clean 来帮助仅删除 *.orig 文件: `git clean -f -e '*.*' -e '!*.orig'` 只有一个排除模式,但它有一个对负面模式的支持很少。因此,我们可以排除所有文件“*.*”,然后否定仅排除“*.orig”文件。 (2认同)

小智 78

你可以做:

git config --global mergetool.keepBackup false
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Git mergetool生成不需要的.orig文件


Jef*_*ett 9

不幸的是,git clean这对我不起作用,因为我已将其*.orig添加到全局 gitignore 文件中,因此它们也从 clean 中被忽略。即使运行git clean -x也不好,因为我不希望所有被忽略的文件都被删除。git clean -i很有帮助,但我真的不想检查每个文件。

但是,我们可以使用排除模式并否定匹配。使用此命令预览:

git clean -e '!*.orig' --dry-run
Run Code Online (Sandbox Code Playgroud)

然后当你有信心时,传递force标志以真正删除它们:

git clean -e '!*.orig' -f
Run Code Online (Sandbox Code Playgroud)

基于leorleor 的评论


Lok*_*ana 5

您可以使用.gitignore忽略文件

只需将*.orig放在列表中,如此处所示

https://help.github.com/articles/ignoring-files

要删除当前文件,您可以创建shell脚本并从项目文件夹运行,如下所示

for file in `find *.orig -type f -print`
do
   echo "Deleting file $file"
   git rm $file -f       
done
Run Code Online (Sandbox Code Playgroud)

  • 虽然他当然可以做到这一点,但这里做的不是正确的:) (5认同)