在filter-branch
和prune / gc之后,仍有一些不受欢迎的提交。
他们不在我关心的树枝上;必须有一些标签或东西固定在它们上面。
我正在试图找出它是什么,然后删除它。
但我尝试的任何东西似乎都无效。
$ git name-rev 1bdac1e1ad7ec61a4b05d3f91eb39bde61a4da1f #what's holding on?
1bdac1e1ad7ec61a4b05d3f91eb39bde61a4da1f original/refs/tags/1.0-rc80~1320^2~8^2~1
$ git rm -r refs/original
$ git name-rev 1bdac1e1ad7ec61a4b05d3f91eb39bde61a4da1f
1bdac1e1ad7ec61a4b05d3f91eb39bde61a4da1f original/refs/tags/1.0-rc80~1320^2~8^2~1
$ git update-ref -d original/refs/tags/1.0-rc80
$ git name-rev 1bdac1e1ad7ec61a4b05d3f91eb39bde61a4da1f
1bdac1e1ad7ec61a4b05d3f91eb39bde61a4da1f original/refs/tags/1.0-rc80~1320^2~8^2~1
(这是一个简单的回购。)
如何移除original/refs/tags/1.0-rc80
,无论是什么?
答案 0 :(得分:5)
全名为refs/original/refs/tags/1.0-rc80
,它位于refs/original
名称空间中。你非常接近这个命令:
git update-ref -d original/refs/tags/1.0-rc80
除了update-ref
要求您拼出全名refs/original/refs/tags/1.0-rc80
。
您可能有一些额外的refs/original/*
名称,因为git filter-branch
会在更改之前复制任何引用名称。您可以通过以下方式查看它们:
git for-each-ref refs/original
(您甚至可以使用for-each-ref
生成删除它们的命令,或者您可以rm -rf .git/refs/original
直接编辑.git/packed-refs
,但for-each-ref
方法更有可能如果/当裁判包装不同或者其他什么时,你可以在将来工作,另外你提到这是一个裸露的回购,所以他们不在.git
这里......)。