140

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

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

但 Git 抱怨说

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

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

如何删除该文件?这是一个 29Mb 的文件,位于我的仓库中,所以我非常需要删除该文件。

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

4

4 回答 4

257
于 2011-06-19T18:37:05.343 回答
26

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

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

这是我用来过滤分支我的 git 存储库的要点: https ://gist.github.com/k06a/25a0214c98bc19fd6817

于 2015-12-09T11:19:30.650 回答
4

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

于 2015-04-23T23:39:33.520 回答
2

向过滤器分支命令添加一个力。

于 2011-06-19T18:31:34.177 回答