我们是git的新手,我想在我们的版本库的开头设置一个标签。 我们的生产代码和最初的版本库是一样的,但我们在那之后做了一些提交。 在开始的时候设置一个标签,可以让我们把生产代码回滚到一个已知的、稳定的状态。
那么如何为一个任意的、较早的提交添加标签呢?
# 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
@dkinzer的回答是,创建标签的日期是当前日期(当你运行git tag
命令时),而不是提交日期。Git对tag
的帮助有一节"On Backdating Tags"_,其中提到。
_如果你从另一个VCS导入了一些修改,并想为你的工作的主要版本添加标签,能够指定嵌入标签对象的日期是很有用的;标签对象中的这些数据会影响,例如,gitweb界面中标签的排序。
_要设置未来标签对象中使用的日期,请设置环境变量
GIT_COMMITTER_DATE
(见后面关于可能数值的讨论;最常见的形式是"YYY-MM-DD HH:MM")。
例如:
$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
页面_"How to Tag in Git"_告诉我们,我们可以通过提取HEAD提交的时间。
git show --format=%aD | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700
我们可以通过以下方式提取某个特定提交的日期。
GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"
然而,与其重复提交两次,不如直接将HEAD改为该提交,并在两个命令中隐含地使用它,似乎更容易。
git checkout 9fceb02
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"
最简单的方法是
git tag v1.0.0 f4ba1fc
。
其中f4ba1fc
是你想标记的提交的哈希值的开头,v1.0.0
是你想标记的版本。
使用命令。
git tag v1.0 ec32d32
其中v1.0是标签名称,ec32d32是您要标记的提交。
做好后就可以按标签推送了。
git push origin --tags
参考资料。
Git(修订控制)。 如何在GitHub中标记一个特定的先前提交点?][1] 。
[1]: https://www.quora.com/Git-revision-control-How-can-I-tag-a-specific-previous-commit-point-in-GitHub
OK,你可以简单的做。
git tag -a <tag> <commit-hash>
因此,如果您想在提交e50f795
时添加tag: 1.0.2,只需简单地这样做。
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
来将所有标签推送到一起...
另外,我还创建了下图中的步骤,为了更清楚的说明步骤。 [![在提交哈希上创建标签][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:
在其他人回答的基础上,这里有一个单行本的解决方案,它将标签日期设置为实际发生的时间,使用注解标签,并且不需要 "git checkout"。
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
设置为所需的标签字符串,commit
设置为提交哈希。