【问题标题】:Add new commit to the existing Git tag向现有 Git 标签添加新提交
【发布时间】:2014-02-22 22:27:42
【问题描述】:

我使用

创建了一个 Git 标记为 v1.1
git tag -a v1.1 -m 'my version 1.1'

然后我推送了那个标签。后来我做了一些与v1.1相关的修改。现在,当我推送新更改并使用检查 git 标签时 git describe 它显示给我v1.1-g2dcc97

如何将我的新提交添加到现有标签?

【问题讨论】:

  • 不确定您的意思。一个标签指向一个 exact 提交。如果您根据标记指向的提交进行进一步更改,git describe 将不会返回标记名称。如果您想要标签的确切名称,则必须标记相关提交。
  • git describe 显示您的 current 状态(最新标签 + 此后的提交,(几位数字)当前 HEAD 的哈希),即 v1.1-g2dcc97 表示“标签v1.1,该提交的哈希是 2dcc97..."
  • git describe 显示的不仅仅是标签名称。您的标签尚未重命名。 git describe 只是显示您的标签指向的提交哈希的缩写。
  • 抱歉,麻烦您看一下我的修改

标签: git github git-branch git-svn git-tag


【解决方案1】:

您不能在不违反重要 Git 准则的情况下将新提交放入现有标签:永远(*)修改您已发布的提交。

Git 中的标签并不意味着是可变的。一旦你把标签推到那里,别管它。

但是,您可以在 v1.1 之上添加一些更改并发布类似 v1.1.1v1.2 的内容。一种方法是

# Create a new branch from tag v1.1
git checkout -b newbranch v1.1

# Do some work and commit it

# Create a new tag from your work
git tag -a -m "Tag version 1.1.1, a bugfix release" v1.1.1

(*) 除非你有一个非常特殊的理由这样做,而且只有当你完全理解其中的含义,即使那样,也不要养成它的习惯。

【讨论】:

  • 然后git push origin --tags(如果推送到origin),将更改推送到您的原始远程。
  • 最后超严重警告/建议
  • 将标签推送到远程仓库git push origin tag_name 例如git push origin v1.1.1
【解决方案2】:

如果您绝对需要“移动”标签而不是创建新标签,您可以这样做:

注意:正如@Chris 所说,请确保您有充分的理由不想创建新标签,因为最佳做法是创建新标签

1. 签出标签(分离的 HEAD)

git checkout tag/v1.1

2.从该标签创建并签出一个分支(即从标签分支)

git checkout -b my-tagged-branch

*** do work and commit changes ***

3. 推送到远程分支。

git push  -u origin my-tagged-branch

如果需要,将分支合并到其他需要更改的分支中(例如,在修复错误的情况下)

4.当还在my-tagged-branch时,删除标签

git tag -d v1.1

5. 再次创建标签:这将“移动”标签以指向您在该分支上的最新提交

git tag v1.1

6.删除远程标签

git push origin :v1.1

7.在远程创建标签

git push origin v1.1

【讨论】:

    【解决方案3】:

    我认为很多人认为标签意味着多个提交可以具有相同的标签(标签通常如何工作)。 就像添加标签以进行某种类型的提交(例如:prod?) 好吧,在 git 中,标签对于提交来说是唯一的。

    但是,如果您真的想使用已经使用过的标签,则需要从远程和本地删除它并重新创建它。但你不应该这样做......

    //remove remote tag
    git push origin :tag_name
    
    //remove tag from local
    git tag -d tag_name
    
    //add tag to latest commit
    git tag tag_name
    
    git log
    
    git push origin tag_name
    

    【讨论】:

      猜你喜欢
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 2020-07-30
      • 2015-07-03
      相关资源
      最近更新 更多