如何删除git参考`refs / original / refs / heads / master`?


35

黄色的圆形盒子里是什么?

屏幕截图

我已经尝试过git branch -Dgit tag -d但是没有成功。那么如何删除呢?


1
请考虑将接受的答案更改为高度支持的Alexey Ten的答案,并更正(git update-ref -d)。
乔纳森·莱因哈特

Answers:


11

它看起来像一个标签,因此以下命令应该起作用:

git tag -d refs/original/refs/heads/master

但是,由于您没有说过,因此您只需将文件从.git目录中删除即可。从存储库根目录,将通过以下命令获取它:

rm .git/refs/tags/refs/original/refs/heads/master

如果git-tag命令失败,则路径可能会略有不同,因此您可能希望cd .git/refs通过反复试验找到有问题的头。删除文件将从本地存储库中删除引用。


2
它不是标签,但是我发现它是.git/refs/original/refs/heads/master
谢耶利

1
使用git update-ref而不是手动更改Git的内部。参见Alexey的答案。
wchargin

100

该命令应该起作用

git update-ref -d refs/original/refs/heads/master

这对我也有同样的问题。请注意,引用存储在名为.git / packed-refs的文件中。如果打开该窗口,则可以看到带有SHA的行和字符串“ refs / original / refs / heads / master”。您可能会删除该行,但是为了安全起见,我将使用此命令。
马特N

14
+1:您应该始终使用git update-ref -d而不是仅rm引用-否则可能会发生不好的事情。
卡勒姆·罗杰斯

3
这应该是公认的答案
Daniel Alder

1
@CallumRogers为什么?
wahnfrieden 2015年

6
@wahnfrieden,因为git可以使用压缩的引用,并且refs目录中将没有相应的文件
Alexey

17

这是裁判。通常由创建,git filter-branch它是运行之前分支所在位置的指针git filter-branch

要删除任何引用,您始终可以在本地存储库中不对其进行任何推送:

git push . :refs/original/refs/heads/master

其他答案也很好地涵盖了其他删除方式。


1
“不按任何按钮”以本地删除引用非常聪明。
40XUserNotFound 2013年

让我开心。我引用了一个远程标记,该标记不再存在。这是唯一有效的命令。
RW4
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.