Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git:提交到标记,然后合并提交到主_Git_Git Branch_Git Merge_Git Tag - Fatal编程技术网

Git:提交到标记,然后合并提交到主

Git:提交到标记,然后合并提交到主,git,git-branch,git-merge,git-tag,Git,Git Branch,Git Merge,Git Tag,我主要熟悉SVN。我已经使用Git一段时间了,但还没有做过非常高级的事情。对于我的项目,我一直在创建标记各个版本的标记。例如,对于我的项目的特定版本,我有一个名为v1.2.3的标签。我想对该标记提交一个错误修复,然后将其合并到master中。我该怎么做呢?我查阅了有关从标记创建分支的信息,但我不确定这样做是否正确。我是否可以直接提交到标记,然后将其合并到主标记中?在我看来,提交到标记是完全错误的,尽管svn在设计上允许这样做 比如说,你有一个版本v1.2.3,并且你承诺了这个标签-你得到了什么?

我主要熟悉SVN。我已经使用Git一段时间了,但还没有做过非常高级的事情。对于我的项目,我一直在创建标记各个版本的标记。例如,对于我的项目的特定版本,我有一个名为
v1.2.3
的标签。我想对该标记提交一个错误修复,然后将其合并到master中。我该怎么做呢?我查阅了有关从标记创建分支的信息,但我不确定这样做是否正确。我是否可以直接提交到标记,然后将其合并到主标记中?

在我看来,提交到标记是完全错误的,尽管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方式”,那不是git方式!git中的标记绝对不会改变。与v1.3版本一样–一旦发布,任何东西都不会改变您发布的版本。您正在寻找的是跟踪特定版本维护的分支。@在我看来,无论您使用的是svn、cvs、git、perforce还是其他任何东西,至少在发布后,发布标签应该是这样的。其他一切都会在以后造成混乱。@sstn这是一个很好的观点,但与svn不同,git实际上严格执行了这一点。如果你听从sstn的建议,其他所有人在拉拽时都会遇到标签冲突,你必须联系所有其他开发人员,告诉他们用你的新标签覆盖他们的本地标签。@sstn ok–这确实令人惊讶。git手册声称的正好相反:可能是