我们是 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
命令时), 而不是提交日期。 tag
的 Git 帮助有一个“On Backdating Tags” 部分 ,其中说:
如果您从另一个 VCS 导入了一些更改,并且想为工作的主要版本添加标记,那么能够指定嵌入标记对象内部的日期是很有用的。例如,标签对象中的这种数据会影响 gitweb 界面中标签的排序。
要设置将来标记对象中使用的日期,请设置环境变量
GIT_COMMITTER_DATE
(请参阅后GIT_COMMITTER_DATE
可能值的讨论; 最常见的形式是 “YYYY-MM-DD HH:MM”)。例如:
$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
“如何在 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
是要标记的版本。