Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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,如何在rebase工作流中应用错误修复_Git_Workflow_Rebase - Fatal编程技术网

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

我们使用git、特性分支和rebase将特性分支带到我们的主节点。我们的图表是这样的

* 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标志的情况下推送这样的东西

我建议只创建分支并合并它。我也不一定建议将修复分支直接基于功能的最后提交。如果有很多更改,将其合并到当前主控中可能会导致很多冲突