由于字段名称未知,尝试在提交时创建标记失败

Attempt to create tag on commit failed due to unknown field name

我希望在已经使用 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 字符串。我应该怎么做才能重新获得创建标签的能力?重新克隆存储库会有帮助吗?

错误信息肯定很奇怪。

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

git

当然会调用 Git。

--no-optional-locks

防止Git在运行宁只读命令如git status时使用锁。 (用户几乎不应该使用这个标志。)由于您使用的命令不是只读的——创建标签确实需要创建锁——这个标志在这里没有实际作用。

(multiple -c options, omitted)

这些覆盖每个 -c <em>variable=value</em> 设置的任何已配置 git config 设置,使用命令-线路设置。这里使用的 None 是有用的,但 none 也是有害的,因为 git tag 本身不使用任何这些。

tag

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

-a

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

-m RC123

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

3eaa22c1103ae52413ff8db0f31552ff277171c5

这是新标签的名称。它非常类似于散列 ID,因此用作实际标签会很糟糕。

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

However, I keep getting the following error: fatal: unknown field name: 5.6

根据一些 --format 指令。它不应该由您显示的 git tag -a -m RC123 <em>tag-name</em> 命令生成。

What should I do in order to regain the ability to create tags?

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

Will re-cloning the repository may help?

Git 事情的结局没有什么根本性的错误。重新克隆是否可以帮助某些第三方 GUI,谁知道呢?也许用 GUI 标记问题可能会有所帮助(例如,如果它是 ,请使用该标记)。

所以我在我自己的机器上创建标签的所有尝试在我创建的所有克隆上都失败了,但令人惊讶的是我可以在将项目克隆到另一台机器时创建标签。

这一发现暗示问题一定与 git 机器配置有关。实际上,文件 ~/.gitconfig 包含以下部分

[tag]
        sort = -version:5.6

删除这两行解决了问题。