1340

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

那么,如何将标记添加到任意的、较旧的提交中呢?

2

8个答案8

重置为默认值
2001

例子:

git tag-a v1.2 9fceb02-m“此处显示消息”

在哪里?02年2月9日是提交id的开始部分。

然后可以使用git推送源v1.2.

你能做到的git日志显示当前分支中的所有提交id。

还有一章是关于标记在Pro Git手册中。

警告:这将创建带有当前日期(例如,该值将显示在GitHub发布页面上)。如果您希望标记的日期与提交日期相同,请查看另一个答案.

8
  • 52
    您也可以在gitk中的右键菜单中执行此操作,如果您是这样查找SHA1的,那么这很方便。 评论 2010年12月10日3:40
  • 157
    忽略-一个-m“此处留言”如果您不想添加消息,请使用以下部件:git标签v1.2 9fceb02
    – 邪恶的
    评论 2015年12月7日10:53
  • 11
    您也可以使用完整的提交ID。
    – j08蓝色
    评论 2017年1月13日9:19
  • @devius使用有什么区别-一个-米。手册页似乎说-一个在以下情况下暗示-米使用。 评论 2018年8月31日11:52
  • 30
    git-push—标记源主将本地分支上的所有标记推送到远程。首选git推送来源<标记名>只推送创建的标记。参考:stackoverflow.com/a/5195913/452708,git-scm.com/book/en/v2/git-Basics-Tagging 评论 2019年3月15日7:00
263

只有代码

#将HEAD设置为要标记的旧提交git结账9fceb02#临时将日期设置为HEAD提交的日期,并添加标记GIT_COMMITTER_DATE=“$(数字显示--格式=%aD|head-1)”\git标签-a v1.2-m“v1.2”#推送到原点git推送来源--标记#将HEAD设置回你想要的样子切换到主分支

细节

@dkinzer的答案创建了日期为当前日期的标记(当您运行查看标签命令),提交的日期。Git帮助标签有一个分区“在回溯标签上”上面写着:

如果您已经从另一个VCS导入了一些更改,并且希望为您的作品的主要版本添加标签,那么可以指定嵌入标签对象的日期;例如,标签对象中的此类数据会影响gitweb界面中标签的顺序。

若要设置未来标记对象中使用的日期,请设置环境变量GIT_委员会_日期(参见后面对可能值的讨论;最常见的形式是“YYYY-MM-DD HH:MM”)。

例如:

$GIT_COMMITTER_DATE=“2006-10-02 10:31”GIT标记-s v1.0.1

页面“如何在Git中标记”向我们显示,我们可以通过以下方式提取HEAD提交的时间:

git show--格式=%aD|head-1#=>2014年2月12日星期三12:36:47-0700

我们可以通过以下方式提取特定提交的日期:

GIT_COMMITTER_DATE=“$(GIT show 9fceb02--format=%aD|head-1)”\git标签-a v1.2 9fceb02-m“v1.2”

然而,与其重复提交两次,似乎更容易将HEAD更改为该提交,并在两个命令中隐式使用它:

git结账9fceb02GIT_COMMITTER_DATE=“$(GIT show--format=%aD|head-1)”GIT标记-a v1.2-m“v1.2”
7
  • 6
    @上校恐慌,你的愿望就是我的命令!github.com/lucasrangit/git-cust-commands/blob/master/…
    – 卢卡斯
    评论 2017年2月2日22:15
  • 2
    @ColonelPanic我给了你一张双关语的赞成票,希望我能给你第二张代码,但一个github明星就行了。 评论 2018年11月9日13:05
  • 1
    在VSCODE(windows)上,为什么会出现此错误?术语“GIT_COMMITTER_DATE=$(GIT show--format=%aD|head-1)”无法识别为cmdlet、函数、脚本文件或可操作程序的名称。 评论 2021年11月3日10:11
  • 1
    @Phrogz谢谢,这个答案为windows解决了这个问题。 评论 2021年11月14日14:36
  • 1
    这对我很管用。为了让我放心,值得补充一下吗GIT_委员会_日期之后不需要对它做任何其他事情吗?(我起初很想遵循这里的步骤,因为我认为可能缺少一个步骤来恢复环境变量。)
    – 古普里
    评论 2023年11月15日17:20
231

最简单的方法是:

git标签v1.0.0 f4ba1fcgit推送来源--标记

具有f4ba1fc作为要标记的提交的散列的开始1.0.0版成为你想要标记的版本。

0
74

好 啊,您只需执行以下操作:

git标记-a

所以如果你想添加标签:1.0.2提交电子50f795,只需执行以下操作:

git标签-a 1.0.2 e50f795

还有你添加消息最后,使用-米,大致如下:

git标签-a 1.0.2 e50f795-m“我的消息”

毕竟,你需要把它推到遥远的,要做到这一点,只需:

git推送原点1.0.2

如果您有许多标签,但不想一一提及,只需简单地:

git推送来源--标记

将所有标签推到一起。。。

此外,我还创建了下图中的步骤,以便更清楚地说明这些步骤:在提交散列上创建标记

您也可以在中添加标记集线器或使用诸如源树,为了避免前面的步骤,我登录到我的比特桶在这种情况下,并从那里开始执行:

  1. 去你的分店找到犯罪要将标记添加到并单击它:

在bitbucket中找到您的提交

  1. 提交页面在右边,找到上面写的地方没有标签然后点击+偶像:

找到上面写着“没有标签”的地方

  1. 在标记名称框中,添加您的标记:

添加标记名

  1. 现在您可以看到标记已成功创建:

在此处输入图像描述

12

这是一个老问题,答案已经给出了所有的工作,但也有一个新的选择,可以考虑。

如果您使用SourceTree管理git存储库,可以右键单击任何提交并向其添加标记。再单击一次鼠标,也可以将标记直接发送到源位置的分支。

10

这个回答by@Phrogz很棒,但在Windows上不起作用。以下是如何使用Powershell用提交的原始日期标记旧提交:

git结账9fceb02$env:GIT_COMMITTER_DATE=GIT show--format=%aD|选择-第一个1git标签v1.2切换到主分支
1
  • 当我使用Powershell(而不是git-bash)签出标记提交时,它会抛出:致命:引用不是树 评论 2022年11月11日16:54
7

基于其他人的答案,这里有一个单行解决方案,它将标记日期设置为实际发生的时间,使用带注释的标记,不需要git校验:

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—标记源主

哪里标签设置为所需的标记字符串,并且犯罪提交哈希。

6

要标记特定提交,请首先打印提交哈希,以查看要向其添加标记的提交

git日志—单行

输出如下:

dee93fc更新App.jsc691fa2角色授权559528a修改离开6aa4ad4编辑项目页面

选择要向其添加标记的提交id,并对提交id进行git签出

git结账6aa4ad4

并为该提交添加标记

git标签v1.0

做这个标签后,回到你的分店

git结帐分支名称

查看所有标记

查看标签

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.