GIT,如何在rebase工作流中应用错误修复
我们使用git、特性分支和rebase将特性分支带到我们的主节点。我们的图表是这样的GIT,如何在rebase工作流中应用错误修复,git,workflow,rebase,Git,Workflow,Rebase,我们使用git、特性分支和rebase将特性分支带到我们的主节点。我们的图表是这样的 * 08a3854 - (master, Feature_2) implement feature_2 more * cf944c7 - implement feature_2 ... * 4b4ed7c - (Feature_1) implement feature_1 more * 483fd88 - imple
* 08a3854 - (master, Feature_2) implement feature_2 more
* cf944c7 - implement feature_2 ...
* 4b4ed7c - (Feature_1) implement feature_1 more
* 483fd88 - implement feature_1 ...
如果我们现在在功能_1中检测到一个bug,并且该功能不是很老,那么我们将直接在该点上修复该功能。首先,我们从Feature_1创建一个分支来修复错误
* 08a3854 - (master, Feature_2) implement feature_2 more
* cf944c7 - implement feature_2 ...
| * 2c383b6 - (Feature_1_fix) fix for feature_1
|/
* 4b4ed7c - (Feature_1) implement feature_1 more
* 483fd88 - implement feature_1 ...
最后,我们希望将Feature_1_fix分支引入Feature_1分支,然后删除fix分支,这样结果可能如下所示
* 08a3854 - (master, Feature_2) implement feature_2 more
* cf944c7 - implement feature_2 ...
* 2c383b6 - (Feature_1) fix for feature_1
* 4b4ed7c - implement feature_1 more
* 483fd88 - implement feature_1 ...
这可能吗?我们该怎么办?从某种意义上说,这在理论上是可能的,但你肯定不想这么做 每个提交的哈希都依赖于它的所有祖先。如果更改提交,则所有子提交的哈希值都将更改。从这个意义上讲,您的第三个示例图是错误的:提交cf944c7和08a3854将发生更改 也许你听说过这样一句咒语:不要给推过的树枝重新定位。为了实现您想要的,您必须将master重设为feature_1_fix。任何依赖于当前主控的工作也必须重新设置基准
08a3854 * (old obsolete master) implement_feature_2 more
cf944c7 * implement feature_2
2222222 * | (master) implement_feature_2 more
1111111 */ implement feature_2
2c383b6 * (Feature_1) fix for feature_1
4b4ed7c * implement feature_1 more
483fd88 * implement feature_1
提交1111111和2222222是新的,基于08a3854的每个人都必须将该工作重新设置为2222222
顺便说一句:git不允许您在没有明确指定-force标志的情况下推送这样的东西
我建议只创建分支并合并它。我也不一定建议将修复分支直接基于功能的最后提交。如果有很多更改,将其合并到当前主控中可能会导致很多冲突