首页 > 解决方案 > 在 git 中修复错误并将更改合并到以前版本和所有下一个版本的正确方法是什么?

问题描述

我是一个单一的开发人员,拥有 master、dev 分支和一个或多个特性分支(来自 dev)和 bugfix 分支(来自 master),我总是将它们合并到 master 和 dev 中。

我应该如何正确解决以下情况?

在 3.0 版本中,我发现了一个小错误,我需要在 3.0(包括在内)和更高版本的所有版本中修复它。

我进行如下:

git clone .... cloned git to localhost

git checkout v3.0 checkout to v3.0 tag commit

然后我对源代码进行了更改,然后

git add . add changes to stack

git checkout -b bugfix checkout to new branch bugfix

git commit -m "My Bugfix ..." make commit

...所以我将更改移动到该分支并在那里签出并提交,现在我不知道这些错误修复分支如何合并到主分支的末尾,而是在提交之后将它们添加为新提交v3.0 标签。

commit1
commit2
commit3 tag v3.0
<== merge bugfix commit
commit4
commit5

标签: gitgithub

解决方案


所以我将更改移动到这个分支并在那里签出并提交

完美的。

现在我不知道那些错误修复分支如何合并到主分支的末尾,而是在带有 v3.0 标签的提交之后将它们添加为新提交。

你没有。如果您想提供一个完全替代的历史记录,您可以在执行所有其他工作之前修复该错误,您可以将所有其他工作重新定位到您的修复并强制推送结果,但是

a) 当您准备要发布的补丁系列时,最好只修复错误的提交并基于更正的提交,并且

b)这不是出版前的工作,你不是为出版而编辑,你是在发布人们依赖的历史勘误表。如果(如果)你可以随便让每个人都知道“嘿,我不得不重新设置 v3.0,对不起,重新获取和重新设置你基于此或此后所做的任何事情”,那么这是可行的。对于您很快就会接受的 oopses,它也比所有替代方案都要好得多。

v3.0 有一个错误,而您使用的是 v5.0,所以不,这不是一个消失的糟糕。这是一个已经出现的错误,您已经确定并发布了修复,现在将其合并到所有需要修复的提示中。为了使集成更容易,首先从当前提示的公共合并基础合并,然后从那里合并到各个提示。


推荐阅读