从 Git 中移除神秘引用
Remove mysterious ref from Git
在 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
,不管它是什么?
全名是refs/original/refs/tags/1.0-rc80
,住在refs/original
名字里space。您非常接近这个命令:
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
方法是更有可能在未来工作 if/when refs 以不同的方式打包,另外你提到这是一个裸仓库所以它们不在 .git
在这里......)。
在 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
,不管它是什么?
全名是refs/original/refs/tags/1.0-rc80
,住在refs/original
名字里space。您非常接近这个命令:
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
方法是更有可能在未来工作 if/when refs 以不同的方式打包,另外你提到这是一个裸仓库所以它们不在 .git
在这里......)。