如何在 Git 中标记较旧的提交?
我们是 Git 新手,我想在存储库的开头设置一个标签。 我们的生产代码与开始存储库相同,但从那时起我们就进行了提交。 开头的标签允许我们将生产“回滚”到已知的稳定状态。
那么如何向任意较旧的提交添加标签呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我们是 Git 新手,我想在存储库的开头设置一个标签。 我们的生产代码与开始存储库相同,但从那时起我们就进行了提交。 开头的标签允许我们将生产“回滚”到已知的稳定状态。
那么如何向任意较旧的提交添加标签呢?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(8)
示例:
其中
9fceb02
是提交 ID 的开始部分。然后,您可以使用 git push origin v1.2 推送标签。
您可以执行 git log 来显示当前分支中的所有提交 ID。
Pro Git 书中还有一个关于标记的很好的章节。
警告:这会创建带有当前日期的标签(例如,该值将显示在 GitHub 发布页面上)。如果您希望标记的日期与提交日期相同,请查看另一个答案。
Example:
Where
9fceb02
is the beginning part of the commit id.You can then push the tag using
git push origin v1.2
.You can do
git log
to show all the commit id's in your current branch.There is also a good chapter on tagging in the Pro Git book.
Warning: This creates tags with the current date (and that value is what will show on a GitHub releases page, for example). If you want the tag to be dated with the commit date, please look at another answer.
只是代码
详细信息
@dkinzer 的回答创建的标签的日期是当前日期(当您运行 git tag 命令时),而不是提交日期。
tag
的 Git 帮助有一个部分“关于回溯标签” 内容如下:页面"如何在 Git 中标记"向我们展示了我们可以通过以下方式提取 HEAD 提交的时间:
我们可以通过以下方式提取特定提交的日期:
但是,与其重复提交两次,似乎更容易将 HEAD 更改为该提交并在中隐式使用它两个命令:
Just the Code
Details
The answer by @dkinzer creates tags whose date is the current date (when you ran the
git tag
command), not the date of the commit. The Git help fortag
has a section "On Backdating Tags" which says:The page "How to Tag in Git" shows us that we can extract the time of the HEAD commit via:
We could extract the date of a specific commit via:
However, instead of repeating the commit twice, it seems easier to just change the HEAD to that commit and use it implicitly in both commands:
最简单的方法是:
将
f4ba1fc
作为要标记的提交的哈希的开头,v1.0.0
是要标记的版本。The simplest way to do this is:
with
f4ba1fc
being the beginning of the hash of the commit you want to tag andv1.0.0
being the version you want to tag.好的,您可以简单地执行以下操作:
因此,如果您想添加 标签: 1.0.2 来提交
e50f795
,只需执行以下操作:您也 <强>在最后添加一条消息,使用
-m
,如下所示:毕竟,您需要将其推送到
远程
,才能做到这一点,简单地做:如果你有很多标签,你不想一一提及它们,只需简单地做:
将所有标签放在一起......
另外,我创建了下图中的步骤,以更清楚地说明步骤:
您也可以在Hub中添加标签或使用SourceTree等工具,为了避免前面的步骤,我在这个中登录了我的Bitbucket案例并从那里执行操作:
无标签
的位置,然后单击+
图标:OK, You can simply do:
So if you want to add tag: 1.0.2 to commit
e50f795
, just simply do:Also you add a message at the end, using
-m
, something like this:After all, you need to push it to the
remote
, to do that, simply do:If you have many tags which you don't want to mention them one by one, just simply do:
to push all tags together...
Also, I created the steps in the image below, for more clarification of the steps:
You can also dd the tag in Hub or using tools like SourceTree, to avoid the previous steps, I logged-in to my Bitbucket in this case and doing it from there:
No tags
and click on the+
icon:这是一个老问题,答案已经给出了所有工作,但还有一个可以考虑的新选项。
如果您使用 SourceTree 来管理 git 存储库,则可以右键单击任何提交并向其添加标签。通过再次单击鼠标,您还可以将标签直接发送到原点的分支。
This is an old question, and the answers already given all work, but there's also a new option which can be considered.
If you're using SourceTree to manage your git repositories, you can right-click on any commit and add a tag to it. With another mouseclick you can also send the tag straight to the branch on origin.
@Phrogz 的答案非常棒,但不适用于 Windows。以下是如何使用 Powershell 用提交的原始日期标记旧提交:
The answer by @Phrogz is great, but doesn't work on Windows. Here's how to tag an old commit with the commit's original date using Powershell:
基于其他人的答案,这里是一个单行解决方案,它将标记日期设置为实际发生的时间,使用带注释的标记并且不需要
git checkout
:其中
tag
设置为所需的标记字符串,并将commit
设置为提交哈希。Building upon the answers of the others, here is a one-liner solution that sets the tag date to when it actually happened, uses annotated tag and requires no
git checkout
:where
tag
is set to the desired tag string, andcommit
to the commit hash.要标记特定提交,首先打印提交哈希值以查看要为其添加标签的提交
输出如下:
选择要为其添加标签的提交 ID,然后 git checkout 获取提交 ID
并为其添加标签提交
并返回到你的分支 制作此标签后
查看所有标签
To tag a specific commit, print commits hashes first to view what commit that you want to add tag to it
The output would like this:
Select commit id that you want to add tag to it and git checkout for commit id
And add tag for that commit
And return to your branch After make this tag
To view all tags