1

问题

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

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

相反,我得到:

fatal: tag 'matlabTest' already exists

似乎 Git 只想创建一个新标签而不是将标签链接到提交?(更多细节见下文)。


背景

我遵循了 git book 中的指南:https://git-scm.com/book/en/v2/Git-Basics-Tagging,这是我尝试过的(但失败了):

我输入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

但是当我通过输入显示“matlabTest”标志时,git show 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 中编写的以前的软件不一致),它是由两个脚本(changes.py 和 dnds.py)之一引起的,并且每个脚本都有不同的提交( cfa84db 和 45b3a4d8) 指向它。我想标记两个提交以帮助我系统地处理这个错误。

4

2 回答 2

3

一个标签总是引用一个提交(在 Git 或其他 VCS 中,它的作用是明确地标识一个特定的修订版)。
在这里(Git),提交代表了其历史上某个时间点的完整回购状态。

在您的情况下,您可以选择标记:

它是由两个脚本(changes.py 和 dnds.py)之一引起的,并且每个脚本都有不同的提交(cfa84db 和 45b3a4d8)

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

如果您真的必须标记多个提交,请查看git notes.

于 2016-11-25T05:48:04.357 回答
2
于 2016-11-25T06:41:07.867 回答