创建的标签名称中包含“Ô,我无法删除标签,尝试以下内容:
git tag -d -- xxÃxx
git push origin :refs/tags/xxÃxx
git config --global core.precomposeunicode true
git tag -d -- xxÃxx
git push origin :refs/tags/xxÃxx
还尝试使用双引号作为名称。
执行命令时,git表示标签已被删除: 本地删除:
Deleted tag 'xxÃxx' (was 434eae7)
推后:
remote: warning: Allowing deletion of corrupt ref.
- [deleted] xxÃxx
标签“xxÃxx”在每次git fetch -p或git pull(两次连续拉动后的事件)时都是新的。
还尝试从源树中删除标记,但标记再次出现。
答案 0 :(得分:2)
为了在每次提取/提取时停止接收标记'xxÃxx'
作为新标记。我已经克隆了存储库。
我没有找到关于如何实际删除标签的解决方案,但这对我来说是可以接受的。
特别感谢@VonC。
答案 1 :(得分:1)
我可能太顽固了,但我想找到一个不会删除回购并再次克隆它的解决方案 - 所以就是这样。
我的不良标签是◊v2.2.29。
在.git / packed-refs中添加一个ref对我来说很有用。 只需复制(或添加)packed-refs文件中的一行,并将标记更改为有问题的标记,格式为:
1ea677c29c1db49a284b3a0b44a5e96fda873da2 refs / tags/◊v2.2.29
您不需要知道该标记的真实对象ID,但您确实需要项目中的有效标识。在我的例子中,1ea677c29c1db49a284b3a0b44a5e96fda873da2只是我所拥有的不同标签的对象ID(当然,这不重要 - 只需从同一文件中的不同行中选择一个),问题就解决了。
旁注: 如果你提供一个不存在于所有git中的对象id,则会抱怨它无效或只是将其视为新标记,具体取决于你是否正确使用了结构。
答案 2 :(得分:0)
在类似的情况下,我按如下方式使用echo
和xargs
的组合来删除包含错误的Unicode字符\u0083
的错误标签:
echo -e '\u0083release-1.7.5-hotfix1' |xargs git tag -d
echo -e '\u0083release-1.7.5-hotfix1' |xargs push --delete origin