我创建了一个 Git 标签,名称为v1.1
,使用的命令是
git tag -a v1.1 -m 'my version 1.1'
我推送了那个标签。后来,我做了一些与v1.1
相关的更改。现在,当我推送新更改并使用git describe
检查git标签时,它显示为v1.1-g2dcc97
。
我该如何将我的新提交添加到现有标签中?
我创建了一个 Git 标签,名称为v1.1
,使用的命令是
git tag -a v1.1 -m 'my version 1.1'
我推送了那个标签。后来,我做了一些与v1.1
相关的更改。现在,当我推送新更改并使用git describe
检查git标签时,它显示为v1.1-g2dcc97
。
我该如何将我的新提交添加到现有标签中?
如果您想在现有标签中添加新的提交,将违反重要的Git准则:永远不要修改已发布的提交。
在Git中,标签是不可变的。一旦您推送了一个标签,就应该让它保持不变。
但是,您可以在v1.1
之上添加一些更改,并发布像v1.1.1
或v1.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
),将更改推送到你的origin远程仓库。 - Kristinn Örn Sigurðssongit push origin tag_name
例如 git push origin v1.1.1
- Shyam Pratap Singh如果您绝对需要“移动”标签而不是创建新标签,则可以执行以下操作:
NB:正如@Chris所说,确保您有充分的理由不想创建新标签,因为最佳实践是创建一个新标签。
1. 检出标签(脱离HEAD状态)
git checkout tag/v1.1
2. 创建并检出基于该标签的分支(即从该标签分支)
git checkout -b my-tagged-branch
*** 进行工作并提交更改 ***
3. 推送到远程分支。
git push -u origin my-tagged-branch
如果需要,在其他需要更改的分支中合并该分支(例如修复错误时)。//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
git describe
将不会返回标签名称。如果您想要获取有关特定提交的确切标签名称,则必须对该提交进行标记。 - Magnus Bäckgit describe
显示您的当前状态(最新标签+此后的提交,(几个数字的)当前HEAD的哈希),即v1.1-g2dcc97
表示“标签v1.1
,该提交的哈希值为2dcc97...
”。 - vonbrand