从 Git repo 清除文件失败,无法创建新备份

我试图通过运行以下命令从远程回购中删除一个文件:

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

但 Git 抱怨说

无法创建新备份。参考文献/原始文献/中已存在以前的备份
用-f 强制覆盖备份
Rm: 无法删除/. git-rewrite/back-refs: 拒绝权限
不能删除目录/. git-rewrite: 目录不是空的

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

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

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

55014 次浏览

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

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

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

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

我也有同样的问题,上面的答案并没有解决它。没有。左边的 git/refs/source/目录。我的解决方案是删除。Git/pack-refs 文件。

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

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

下面是我用来过滤分支我的 git 回购的要点: https://gist.github.com/k06a/25a0214c98bc19fd6817