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

时间:2012-09-11 08:58:28

标签: 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...

任何帮助将不胜感激。

10 个答案:

答案 0 :(得分:204)

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

cd /your/repo/directory
find . -name '*.orig' -delete 

答案 1 :(得分:140)

尝试git clean您可以找到herehere

的更多信息

答案 2 :(得分:67)

你可以这样做:

git config --global mergetool.keepBackup false

有关详细信息,请参阅Git mergetool generates unwanted .orig files

答案 3 :(得分:4)

您可以使用.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

答案 4 :(得分:3)

不幸的是import csv with open('chicago.csv') as chicago_data: csvReader = csv.reader(chicago_data, delimiter=',') for row in csvReader: print(row[0]) 对我不起作用,因为我已将git clean添加到我的全局gitignore文件中,因此他们也会从干净中忽略。即使正在运行*.orig也不行,因为我不希望所有被忽略的文件被删除。 git clean -x很有帮助,但我真的不想审核每个文件。

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

git clean -i

然后,当您有信心时,请传递git clean -e '!*.orig' --dry-run 标志以真正删除它们:

force

基于leorleor's comment

答案 5 :(得分:2)

git rm Gemfile.lock.orig 以及你不需要的其他文件。 git commit --amend

要彻底清除这些斑点, git gc --prune=0 --aggressive

答案 6 :(得分:1)

对我来说git clean -f删除了所有* .oig文件。并保留以前已存在的那些。

这是合并后的(差不多)样子:

$ git status
On branch feature/xyz
Your branch is ahead of 'origin/feature/xyz' by 568 commits.
  (use "git push" to publish your local commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .idea/codeStyles/
    .idea/misc.xml.orig
合并之前

.idea/codeStyles/已作为未跟踪文件存在。 <{1}}(还有更多)必须删除。

=&GT;使用.idea/misc.xml.orig

git clean -f

导致:

$ git clean -f
Removing .idea/misc.xml.orig

答案 7 :(得分:0)

您可以使用预提交挂钩自动执行此过程。为此,只需进入项目文件夹,然后搜索隐藏的文件夹.git。 在其中,您会找到hooks目录,将其打开并创建一个名为pre-commit的文件,其下一个包含:

echo "Looking for .orig files to remove"
pwd=$(pwd)
find . -name '*.orig' -delete 
echo "Done removing .orig files"

现在,它将始终在提交某些内容之前清除orig文件,因此无需将其保留在gitignore中。

答案 8 :(得分:-1)

你可以做git status -s | grep "\.orig$" | awk '{print $2}' | xargs -n1 -r echo rm

TL; DR;

git status -s允许您获取有关索引

的所有修改/丢失文件

grep "\.orig$"过滤掉文件,以&#34; .orig&#34;

结尾

awk '{print $2}'列出文件名(跳过git信息,例如A,M,??)

xargs -n1 -r echo rm打印删除每个参数的命令(-n1:一次一个,-r:空时跳过)只需复制并粘贴命令,双重检查要删除的文件。

答案 9 :(得分:-5)

git rm <file>

http://git-scm.com/docs/git-rm

还要将要忽略的文件/目录添加到.gitignore文件中。