"fatal: tag 'someTag' already exists" ,当尝试向旧提交添加标记时



问题

为什么我不能在两个较旧的提交中添加标签?

git tag -a matlabTest cfa84dbb6dd3c2c9956421e723d2f99786f7b417
git tag -a matlabTest 45b3a4d83eece8a5adcb947392f15a14bd4b0e63

我得到了:

fatal: tag 'matlabTest' already exists

Git似乎只想创建一个新标签,而不是将标签链接到提交?(有关更多详细信息,请参见下文)。


背景

我遵循了GIT书中的准则:https://git-scm.com/book/en/v2/git-basics-tagging,这是我尝试(和失败):

i输入git log --pretty=oneline,显示三个提交:

cfa84dbb6dd3c2c9956421e723d2f99786f7b417 Preparing to make changes to changes.py to fix
45b3a4d83eece8a5adcb947392f15a14bd4b0e63 Tests: wholeseq analysis differs to Matlab
a894da22e2eb1c03930829622656ffd6da5ce161 Initial python scripts for analysis

我创建一个标签git tag -a matlabTest,现在我想将" matlabtest"添加到两个提交**。具体而言,上面显示的三个提交的顶部和中间提交。

git tag -a matlabTest cfa84d
git tag -a matlabTest 45b3a4

现在在这两种情况下,我都会收到以下错误:

fatal: tag 'matlabTest' already exists

但是,当我通过输入git show matlabTest显示" matlabtest"标志时,我发现只有第一个提交被成功标记,我已经截断了输出,因为它很长,但是在输出结束时,我看不到两个提交都被标记了:

tag matlabTest
Tagger: *foo (I did not want to show personal information)*
Date:   Fri Nov 25 02:37:41 2016 +0200
After testing dnds.py by comparing whole-seq dN/dS output to MATLABs dnds() output, both using NG, dnds.py seems to have a calculation error. So I have started to make changes to changes.py
commit 45b3a4d83eece8a5adcb947392f15a14bd4b0e63
Author: *foo (I did not want to show personal information)*
Date:   Fri Nov 25 02:20:27 2016 +0200
*...<remainder of script>*

额外的背景

**为什么我要标记两个较旧的提交?因为我试图调试有一些沉默错误(与我在MATLAB中写的以前的软件不一致),并且是由两个脚本之一(Change.py和dnds.py)引起的,每个脚本都有不同的提交(CFA84DB和45B3A4D8)指向它。我想标记两个承诺以帮助我以系统的方式对待此错误。

a tag 始终参考一个 commit(在git或其他vc中,其作用是明确识别特定的修订版)。
在这里(git),该提交代表其历史上某个时刻的完整回购状态。

在您的情况下,您可以替代标记:

它是由两个脚本之一(cange.py和dnds.py)引起的,每个脚本都有不同的提交(CFA84DB和45B3A4D8)

假设您可以编写表现出不良行为的测试,则可以查明使用git bisect的确切错误提交。这将检测 first commit,它引入了错误。

如果您确实必须标记多个提交,请查看git notes

当您用于两个不同的提交时,标签名称应有所不同。

您可以使用标签名称matlabtest.1和matlabtest.2来区分它们。您也可以git tag -a matlabTest.1 cfa84d -m ‘describe the difference’

相关内容

  • 没有找到相关文章

最新更新