Git:提交到标签,然后将提交合并到主分支

5

我主要熟悉SVN。我使用Git已经有一段时间了,但没有做过极其高级的事情。对于我的项目,我一直在创建标记以标记单个版本。例如,我有一个名为v1.2.3的标记,用于特定版本的项目。我想提交一个修复bug的代码到该标记,然后将其合并到主分支。我该如何操作?我查找了有关从标记创建分支的信息,但不确定是否这样做是正确的。我可以直接提交到标记,然后将其合并到主分支吗?


可能是在Git中重命名标签?的重复问题。 - Chronial
1个回答

8
承诺某个标签是完全错误的,我认为,尽管svn在设计上允许这样做。
比如说,你有一个v1.2.3的版本发布,然后你提交到那个标签上,你会得到什么?还是v1.2.3或者1.2.3a之类的?将来怎么恢复出版本1.2.3呢?
不过,在git中,你可以重新创建标签。但我不确定除了“我误打了错误的版本”或者有“变动的”标签,例如“最新的稳定版修订”之外的任何情况都应该这样做。
在git中,你可以这样做:
git branch v1.2.3-bugfix v1.2.3   [v1.2.3-bugfix is your branch, v1.2.3 the tag]
git checkout v1.2.3-bugfix
-- do your changes --
git add ...
git commit
git tag -f v1.2.3

也就是说,首先你需要从标签上创建一个分支。然后通过git checkout -b的快捷方式检出该分支。您提交更改并重新创建标签。

之后,您可以删除修复错误的分支。


谢谢!看起来我走在正确的轨道上。那基本上就是我最初想做的事情(从标签创建一个分支,提交更改,然后重新打标签)。只是我不确定这是否符合 "git 的方式"。 - Vivin Paliath
1
这不是 Git 的方式!在 Git 中,标签是绝对不会改变的东西。就像 v1.3 版本发布一样 - 一旦发布,你所发布的版本将永远不会改变。你要找的是一个分支来跟踪特定版本的维护。 - Chronial
1
@Chronial 在我看来,无论你使用svn、cvs、git、perforce还是其他什么工具,至少对于发布标签,这就是应该的做法。其他任何方式都会在以后造成混乱。 - sstn
1
@sstn 好的 - 这确实令人惊讶。Git手册声称相反:http://www.kernel.org/pub/software/scm/git/docs/git-tag.html#_on_re_tagging - Chronial
Git手册上说:“如果你从未推送过任何内容,只需重新打标签即可。” - remcoder
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接