问题
为什么我不能在两个较旧的提交中添加标签?
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’
。