从Git仓库清除文件失败,无法创build新的备份

我试图从我的远程仓库中删除一个文件运行:

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

但Git抱怨说

无法创build新的备份。 之前的备份已经存在于refs / original /
用-f强制覆盖备份
rm:无法删除/.git-rewrite/backup-refs:权限被拒绝
rm:无法删除目录/.git-rewrite:目录不为空

这是我已经删除Windows上的.git-rewrite目录。

我怎样才能删除该文件? 这是一个29Mb的文件,坐在我的回购,所以我很需要删除该文件。

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

您已经执行了filter分支操作。 过滤分支之后,Git会保留旧的提交,以防出现问题。

你可以在.git/refs/original/…find它们。 删除该目录及其中的所有文件,或使用-f标志强制Git删除旧的引用。

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

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

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

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

我有同样的问题,上面的答案没有解决它。 没有.git / refs / original /目录。 我的解决scheme是删除.git / packed-refs文件。

向filter分支命令添加一个强制。