如何在Git中标记较旧的提交?
我们是git的新手,我想在我们的仓库开始处设置一个标签。 我们的生产代码与开始存储库相同,但从那时起我们已经进行了提交。 一开始的标签可以让我们将生产“回滚”到已知的稳定状态。
那么如何将标签添加到任意的较老的提交?
例:
git tag -a v1.2 9fceb02 -m "Message here"
9fceb02
是提交ID的开始部分。
然后你可以使用git push --tags origin master
来推送它们
你可以做git log
来显示当前分支中的所有提交ID。
Pro Git书中还有一个很好的标记章节。
警告:这会创建具有当前日期的标签(例如,该值将显示在github发布页面上)。 如果您希望标签与提交日期约会,请查看另一个答案。
只是守则
# 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
(请参阅后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
是您想要标记的版本。