我在 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/