git - 在 git filter-branch 之后忘记 rm refs/original

标签 git git-filter-branch git-gc

我在 git filter-branch 之后忘记了 rm refs/original 并执行了 git gc,这清除了 refs。我也致力于新的 repo 协议(protocol),并希望保留这些 promise 。

提取的分支有几千字节的大小,但是 .git 仍然有 80 MB,就像过滤之前一样。

现在 refs 是空的,我不能再轻易删除 refs/original 了。我怎样才能删除原件?如果可能,我想避免再次 filter-branch

最佳答案

你的 refs 被打包了(git gc 运行 git pack-refs)。这不会对 refs 本身进行任何更改,除了不是将每个 refs 都放在一个单独的文件中,而是它们都在“打包”文件中。

你只需要删除 refs/origina/ refs。理论上在每个上使用 git update-ref -d 应该可行,但如果有很多,在你的编辑器中打开 .git/packed-refs 可能更容易手动删除所有 refs/original/ 行。

您可能还需要清除引用日志。

参见 this StackOverflow answer了解更多。

关于git - 在 git filter-branch 之后忘记 rm refs/original,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33039638/

相关文章:

git - 为什么 no-op filter-branch 会产生分歧,我该如何解决?

git - 如何在运行 "Loose Object"时跳过 'git gui' pop 窗口

git - 使用另一个分区进行临时 git 操作 (git gc)

git - 如何在本地执行 Capistrano 任务?

git - 如何从用户的 git 获取第一个和最后一个提交

git - 根据提交消息编辑多个提交的作者/提交者

git - 使用 Git 更改项目的第一次提交?

git - git在执行操作时会做什么:git gc-git prune

git - 在 git 中,提交和修订之间有什么区别

windows - 每次我提交时都阻止 gpg 询问 key