首页 > 解决方案 > 由于未知字段名称,尝试在提交时创建标签失败

问题描述

我希望在我的一个提交上创建新标签,该提交已经使用 Sourcetree 推送到原点。

git --no-optional-locks -c color.branch=false -c color.diff=false -c color.status=false -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree tag -a -m  RC123 3eaa22c1103ae52413ff8db0f31552ff277171c5 

但是,我不断收到以下错误: fatal: unknown field name: 5.6

我也尝试在我的项目中的其他提交上创建标签,并且还尝试在没有额外参数的情况下从终端创建标签,但仍然得到相同的结果。

我不知道这是5.6从哪里获取的,但我有其他可能包含该5.6字符串的标签。我应该怎么做才能重新获得创建标签的能力?重新克隆存储库会有所帮助吗?

标签: gittags

解决方案


错误消息绝对是奇怪的。

该命令本身有点奇怪,但不应产生该错误。在这里,它被分成几个部分,以及每个部分的含义:

git

当然,调用 Git。

--no-optional-locks

防止 Git 在运行只读命令(如git status. (用户几乎不应该使用这个标志。)因为你使用的命令不是只读的——创建一个标签确实需要创建锁——这个标志在这里没有真正的功能。

(多-c选,省略)

这些使用命令行设置覆盖git config每个设置的任何配置设置。这里使用的没有一个是有用的,但也没有一个是有害的,因为它本身不使用任何这些。-c variable=valuegit tag

tag

调用 Git 的tag子命令,用于标签读取或标签设置。

-a

指示 Git 创建一个带注释的标签,其中包含一条消息。

-m RC123

这提供了消息。 RC123似乎是一个奇怪的消息。看起来您可能想要一些其他消息,并RC123用作标签名称,但由于-m使用下一个单词作为消息,RC123因此成为消息。

3eaa22c1103ae52413ff8db0f31552ff277171c5

这是新标签的名称。它与哈希 ID 非常相似,因此用作实际标签会很糟糕。

由于没有提供哈希 ID,因此新标签3eaa22c1103ae52413ff8db0f31552ff277171c5将附加到的提交是当前 ( HEAD) 提交。如果您运行git rev-parse HEAD,您将看到新标签3eaa22c1103ae52413ff8db0f31552ff277171c5将识别的哈希 ID。

但是,我不断收到以下错误:fatal: unknown field name: 5.6

根据某些指令,这是您使用列出git for-each-ref标签的orgit tag命令所获得的那种东西。它不应该由您显示的命令产生。--formatgit tag -a -m RC123 tag-name

我应该怎么做才能重新获得创建标签的能力?

从命令行(bash、zsh、DOS/Windows CLI 等),您应该仍然能够创建标签。如果您正在使用一些复杂的 GUI,可能需要以某种方式重新配置它。

重新克隆存储库会有所帮助吗?

从根本上来说, Git并没有什么错误。重新克隆是否可能对某些第三方 GUI 有所帮助,谁知道呢?也许用 GUI 标记问题可能会有所帮助(例如,如果它是,请使用该标记)。


推荐阅读