如何在Git中标记旧的提交?

点点圈 提交于 2019-12-27 14:47:18

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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

那么如何将标签添加到任意较旧的提交中?


#1楼

只是守则

# 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"

#2楼

最简单的方法是

git tag v1.0.0 f4ba1fc

f4ba1fc是要标记的提交的哈希的开头, v1.0.0是要标记的版本。


#3楼

这是一个老问题,答案已经完成所有工作,但也有一个新的选项可以考虑。

如果您使用SourceTree来管理您的git存储库,您可以右键单击任何提交并向其添加标记。 使用另一个鼠标点击,您还可以将标记直接发送到原点上的分支。


#4楼

使用命令:

git tag v1.0 ec32d32

其中v1.0是标记名称,ec32d32是要标记的提交

完成后,您可以通过以下方式推送标签:

git push origin --tags

参考:

Git(版本控制):如何在GitHub中标记特定的先前提交点?


#5楼

例:

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

其中9fceb02是commit id的开头部分。

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

您可以执行git log来显示当前分支中的所有提交ID。

在Pro Git书中还有一个关于标记的好章节。

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!