由于特殊字符“Ô,无法删除GIT标记

时间:2015-07-17 13:51:41

标签: git special-characters git-tag

创建的标签名称中包含“Ô,我无法删除标签,尝试以下内容:

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(两次连续拉动后的事件)时都是新的。

还尝试从源树中删除标记,但标记再次出现。

3 个答案:

答案 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)

在类似的情况下,我按如下方式使用echoxargs的组合来删除包含错误的Unicode字符\u0083的错误标签:

echo -e '\u0083release-1.7.5-hotfix1' |xargs git tag -d
echo -e '\u0083release-1.7.5-hotfix1' |xargs push --delete origin