# Set the HEAD to the old commit that we want to tag
git checkout 9fceb02
# temporarily set the date to the date of the HEAD commit, and add the tag
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" \
git tag -a v1.2 -m"v1.2"
# set HEAD back to whatever you want it to be
git checkout master
例子。
其中
9fceb02
是提交ID的开头部分。然后你可以用
git push origin v1.2
来推送该标签。你可以用
git log
来显示你当前分支中的所有提交id's。在《Pro Git》一书中也有关于标签的好章节。
警告:这将创建带有当前日期的标签(例如,该值将显示在GitHub发布页面上)。 如果你想让标签的日期与提交日期一致,请看另一个答案。
只是代码
细节
@dkinzer的回答是,创建标签的日期是当前日期(当你运行
git tag
命令时),而不是提交日期。Git对tag
的帮助有一节"On Backdating Tags"_,其中提到。页面_"How to Tag in Git"_告诉我们,我们可以通过提取HEAD提交的时间。
我们可以通过以下方式提取某个特定提交的日期。
然而,与其重复提交两次,不如直接将HEAD改为该提交,并在两个命令中隐含地使用它,似乎更容易。
最简单的方法是
git tag v1.0.0 f4ba1fc
。其中
f4ba1fc
是你想标记的提交的哈希值的开头,v1.0.0
是你想标记的版本。使用命令。
其中v1.0是标签名称,ec32d32是您要标记的提交。
做好后就可以按标签推送了。
参考资料。
Git(修订控制)。 如何在GitHub中标记一个特定的先前提交点?][1] 。
[1]: https://www.quora.com/Git-revision-control-How-can-I-tag-a-specific-previous-commit-point-in-GitHub
OK,你可以简单的做。
因此,如果您想在提交
e50f795
时添加tag: 1.0.2,只需简单地这样做。另外,你还可以在结尾处用
-m
添加一个信息**,比如这样。毕竟,你需要把它推到 "远程",要做到这一点,只需做。
如果你有很多标签,而你又不想一个一个地提,就简单地提。
来将所有标签推送到一起...
另外,我还创建了下图中的步骤,为了更清楚的说明步骤。 [![在提交哈希上创建标签][1]][1]
</br>。 你也可以在Hub或使用SourceTree等工具来dd标签,为了避免前面的步骤,我这次是登录我的Bitbucket,从那里开始做。
[![在bitbucket中找到你的提交][3]][3] 。
[![找到写着 "无标签 "的地方][4]][4]
[![在此输入图像描述][6]][6]
[1]: https://i.stack.imgur.com/7qLil.png [2]: https://i.stack.imgur.com/qFR88.png [3]: [3]:https://i.stack.imgur.com/cBmXr.png [4]: https://i.stack.imgur.com/Nd7nE.png 5:
[6]: https://i.stack.imgur.com/bBf69.png
这是一个老问题,已经给出的答案都可以用,但也有一个新的选项可以考虑。
如果你使用 SourceTree 来管理 git 仓库,你可以在任何提交上右击并添加一个标签。 再用鼠标点击一下,你也可以将标签直接发送到起源分支。
在其他人回答的基础上,这里有一个单行本的解决方案,它将标签日期设置为实际发生的时间,使用注解标签,并且不需要 "git checkout"。
其中
tag
设置为所需的标签字符串,commit
设置为提交哈希。@Phrogz的答案很好,但在Windows上不起作用。 下面是如何用Powershell来标记一个旧提交的原始日期。