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

Car*_*din 104 git git-filter-branch git-commit git-rewrite-history

我尝试通过运行以下命令从远程仓库中删除文件:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
Run Code Online (Sandbox Code Playgroud)

但是Git抱怨说

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

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

我该如何删除该文件?这是一个29Mb的文件,坐在我的仓库,所以我非常需要删除该文件.

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

kni*_*ttl 205

您已经执行了过滤器分支操作.在filter-branch之后,Git会保持对旧提交的引用,以防出现问题.

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

git filter-branch -f \
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
Run Code Online (Sandbox Code Playgroud)

  • 选项标志(`-f`)在refs(`HEAD`)之前.refs go last (12认同)
  • 终于搞定了,谢谢!我确实尝试了-f标志,但问题是我把它放在命令的末尾,例如.HEAD -f.看到你的命令让我尝试在开始时把旗帜,它工作了!= d (8认同)

k06*_*06a 17

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

git update-ref -d refs/original/refs/heads/master
Run Code Online (Sandbox Code Playgroud)

以下是我过去使用git repo过滤分支的要点:https: //gist.github.com/k06a/25a0214c98bc19fd6817

  • 请务必将“master”更改为您尝试修复的分支..在我的例子中为“develop” (2认同)

Yar*_*ron 5

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