【问题标题】:Applying the existing tag on a new commit in Git在 Git 中的新提交上应用现有标签
【发布时间】:2015-01-07 19:14:03
【问题描述】:

我有一个名为 tag_0.0.1 的标签,它被推送到 Git 存储库中。我每天运行几次构建。我不想每次都创建新标签,而是想重写同一个标签。新的更改应该应用于现有标签,并且可以推送到 repo。我知道我们可以删除 repo 上的标签并在本地创建相同的标签并推送它。有没有办法在现有标签上应用新的提交?

这是我尝试过的:

git 标签

tag_0.0.1

代码修改后——删除

git tag -d tag_0.0.1

git push --delete origin tag_0.0.1

重新创建并推送

git tag tag_0.0.1

git push --tags

我觉得这没有道理。有没有更好的方法?我也想知道如何推送特定的提交而不是推送所有的提交。

【问题讨论】:

  • Git 标签是一个戳记,应该这样使用。如果您不想无休止地创建新标签,请不要创建标签。仅标记发布或重要里程碑。
  • 你是对的。但我想将其作为构建自动化的一部分。每个构建更改都应该被标记。这样我们就可以随时获得特定的提交。感谢您的回复。
  • 你不需要 git tag every single build 只是为了得到一个特定的提交。您需要做的就是保存提交哈希(或它的前几个字母),您可以随时查看它...
  • 请记住,如果您签出一个标签,您处于分离头模式,在此模式下创建的提交在您再次签出分支后更难找到
  • 感谢大家提供的信息

标签: git git-tag


【解决方案1】:

应该标记每个构建更改。以便我们可以随时获取具体的提交。

您的构建过程应该使用git describe 合并最后一个标签和当前的SHA1。

你可以在“Automatic versioning in Xcode with git-describe”(甚至git describe --dirty)中看到一个例子,使用

VERSION=`git describe --dirty |sed -e "s/^[^0-9]*//"`

其他例子:

这样:

  • 您正在构建的二进制文件包含的信息可让您了解用于构建所述构建的代码的确切版本。
  • 您将标签限制为重要的实际版本(例如用于正式发布的稳定版本)

【讨论】:

  • 似乎 git describe 只显示带注释的标签。但我只创建轻量级标签。无论如何,我会试一试。谢谢大家。
猜你喜欢
  • 2014-02-22
  • 2015-12-06
  • 2013-04-28
  • 2016-10-11
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 2023-02-09
  • 2011-08-22
相关资源
最近更新 更多