关于git commit:从git repo清除文件失败,无法创建新备份

Purging file from Git repo failed, unable to create new backup

我试图从远程报告中删除一个文件,方法是运行:

1
git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD

但是Git抱怨说

Cannot create new backup. A previous backup already exists in refs/original/
Force overwriting the backup with -f
rm: cannot remove /.git-rewrite/backup-refs : Permission denied
rm: cannot remove directory /.git-rewrite : Directory not empty

这是在我删除了windows上的.git重写目录之后。

如何删除该文件?这是一个29MB的文件放在我的repo上,所以我非常需要删除该文件。

我试图删除git rebase -i中的commit,但显然是因为commit涉及了很多不同的文件,git抱怨冲突,我放弃了安全性。


您已经执行了筛选分支操作。在过滤分支之后,Git保留对旧提交的引用,以防出现问题。

你可以在.git/refs/original/…中找到。或者删除该目录和其中的所有文件,或者使用-f标志强制git删除旧的引用。

1
2
git filter-branch -f \
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD


使用此命令删除原始备份:

1
git update-ref -d refs/original/refs/heads/master

这里是我用来过滤我的Git报告分支的gist:https://gist.github.com/k06a/25a0214c98bc19fd6817


我有同样的问题,上面的答案没有解决。没有留下.git/refs/original/directory。我的解决方案是删除.git/packed refs文件。


向filter branch命令添加一个力。