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-rewrite already exists, please remove it时,这也可能适用。
您已经执行了筛选分支操作。在过滤分支之后,Git保留对旧提交的引用,以防出现问题。
你可以在.git/refs/original/…中找到。或者删除该目录和其中的所有文件,或者使用-f标志强制git删除旧的引用。
1 2
| git filter-branch -f \
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD |
- 终于成功了,谢谢!我确实尝试了-f标志,但问题是我把它放在了命令的末尾,例如head-f。看到你的命令,我试着把标志放在开头,它就工作了!= D
- 选项标志(-f先于refs(HEAD)。裁判最后的裁判
- 添加-f和删除目录后,仍然会出现同样的错误。有什么想法吗?
- @亚龙:哪个错误?我的回答中没有出现git add。
- @Knittl,我不是指git add。即使在删除了.git/refs/original/文件夹并使用git filter-branch命令中的-f标志后,我仍然收到了与原始海报相同的错误。在我的例子中,解决方案是删除.git/packed-refs文件。
- @亚龙:packed-refs包含所有参考文献。你可能删除了很多重要的参考资料。
- 我在权限方面也遇到了同样的问题,甚至我第一次使用了filter-branch!有什么想法吗?存储库实际上是从远程存储库复制(提取)的。
- @Gabrielius:您的存储库中的文件和目录权限是否正确?你能写你的磁盘吗?还有磁盘空间吗?还要确保.git-rewrite目录不存在。
- @Knitttl,我找到了解决方法,但没有找到问题所在。基本上,我添加了--ignore-unmatch来命令git rm,一切顺利!
- @加布里埃乌斯:从2012年开始,我的答案就已经包含了这一点?:)
- @克尼特,是的,很有趣。当我删除--ignore-unmatch时,问题就开始了,因为没有删除任何内容,但随后出现了这个权限错误。然后我重新添加了参数,但这次使用了不同的路径。因此,真正的问题是错误的路径:)
- 删除.git/refs/original/并不能解决我的问题。我还原了文件夹,然后使用此答案删除备份。
使用此命令删除原始备份:
1
| git update-ref -d refs/original/refs/heads/master |
这里是我用来过滤我的Git报告分支的gist:https://gist.github.com/k06a/25a0214c98bc19fd6817
- 这是删除备份的正确解决方案!删除.git/refs/original/并不能解决问题。
- 请确保将"master"更改为要修复的分支。在我的情况下,"发展"
我有同样的问题,上面的答案没有解决。没有留下.git/refs/original/directory。我的解决方案是删除.git/packed refs文件。
- 同样的问题。但是,没有.git/packed-refs文件,.git/refs中没有original文件夹。有人吗?
- 这里通过在命令中添加-r标志来解决。
- 这里也有同样的问题。删除压缩的refs解决了这个问题,但它也破坏了我的git目录的其余部分,我必须从备份中恢复。
向filter branch命令添加一个力。