我们是git的新手,我想在存储库的开头设置一个标记。 我们的生产代码与开始的存储库相同,但我们从那时起就进行了提交。 一开始的标签将允许我们将生产“回滚”到已知的稳定状态。

那么,如何向任意的旧提交添加标记呢?


当前回答

在其他人的答案的基础上,这里是一个一行程序的解决方案,设置标签日期为实际发生的时间,使用带注释的标签,不需要git签出:

tag="v0.1.3" commit="8f33a878" bash -c 'GIT_COMMITTER_DATE="$(git show --format=%aD $commit)" git tag -a $tag -m $tag $commit'
git push --tags origin master

其中tag被设置为所需的标记字符串,并提交到提交散列。

其他回答

最简单的方法是:

git tag v1.0.0 f4ba1fc
git push origin --tags

f4ba1fc是要标记的提交的散列的开始,v1.0.0是要标记的版本。

例子:

git tag -a v1.2 9fceb02 -m "Message here"

其中9fceb02是提交id的开始部分。

然后,您可以使用git push origin v1.2推送标记。

你可以使用git log来显示当前分支中所有的提交id。

在Pro Git的书中也有一个关于标签的很好的章节。

警告:这会创建带有当前日期的标签(例如,该值将显示在GitHub发布页面上)。如果您希望标记与提交日期一起标注,请查看另一个答案。

好的,你可以简单地做:

git tag -a <tag> <commit-hash>

所以如果你想添加tag: 1.0.2来提交e50f795,只需简单地做:

git tag -a 1.0.2 e50f795

你还可以在结尾添加一条消息,使用-m,就像这样:

git tag -a 1.0.2 e50f795 -m "my message"

毕竟,你需要把它推到遥控器上,要做到这一点,只需做:

git push origin 1.0.2 

如果你有很多标签,你不想一个一个地提到它们,只需简单地这样做:

git push origin --tags

把所有标签放在一起…

此外,我还创建了下图中的步骤,以进一步阐明这些步骤:

你也可以在Hub或使用SourceTree等工具添加标签,以避免前面的步骤,在这种情况下,我登录到我的Bitbucket并从那里做:

去你的分支,找到你想要添加标签的提交,然后点击它:

在提交页面,在右边,找到没有标签的地方,然后点击+图标:

在标签名称框中,添加您的标签:

现在你可以看到标签已经成功创建:

在其他人的答案的基础上,这里是一个一行程序的解决方案,设置标签日期为实际发生的时间,使用带注释的标签,不需要git签出:

tag="v0.1.3" commit="8f33a878" bash -c 'GIT_COMMITTER_DATE="$(git show --format=%aD $commit)" git tag -a $tag -m $tag $commit'
git push --tags origin master

其中tag被设置为所需的标记字符串,并提交到提交散列。

@Phrogz的回答很好,但在Windows上不起作用。下面是如何使用Powershell将旧提交标记为提交的原始日期:

git checkout 9fceb02
$env:GIT_COMMITTER_DATE = git show --format=%aD | Select -First 1
git tag v1.2
git checkout master