无法删除,因为特殊字符的GIT标签“A”

问题描述 投票:6回答:3

一个标记创建一个包含“A”的名字,我无法删除标签试过如下:

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”之际,新的在每一个混帐取-p或混帐拉(事件连续两次拉后)。

还试图删除源代码树的标签,但标签会再次出现。

git special-characters git-tag
3个回答
2
投票

为了停止接收标签'xxÃxx'为每拉一个新的标签/读取。我做了一个版本库的克隆。

我没有找到如何实际删除标签的解决方案,但是这是可以接受我。

特别感谢@VonC。


1
投票

我可能只是太固执,但我想找到不涉及删除回购和重新克隆的解决方案 - 所以在这儿呢。

我的坏标签是◊v2.2.29。

添加在git的一个REF /填充裁判的伎俩我。只需复制(或增加)的填充裁判文件中的行,并更改标签,以您的问题之一,格式如下:

1ea677c29c1db49a284b3a0b44a5e96fda873da2裁判/标签/◊v2.2.29

你并不需要知道该标签的真正对象ID,但你需要从你的项目一个有效的。在我的例子1ea677c29c1db49a284b3a0b44a5e96fda873da2仅仅是一个不同的标签我有(这并不重要,当然 - 随便挑一个在同一个文件不同的线路)的对象ID,这个问题得到解决。

附注:如果你给的是完全不存在的git对象ID要么抱怨它是无效的,或继续将其当作一个新的标签,这取决于你是否得到了结构正确与否。


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
© www.soinside.com 2019 - 2024. All rights reserved.