我有一个分支branch-1
,其中包含36个文件中的更改branch-1
已合并到master
出了点问题,所以我们恢复了
我们意识到这个bug是一个错字,所以我想创建一个新的分支,branch-2
拉取所有现有的工作,修复错字,然后推送到新的分支,这样我就可以在github中创建一个PR。
我尝试过的:
我在本地有branch-1
,所以我检查了它,然后尝试git checkout -b branch-2
,但这只复制了master
。我想我应该从旧的分支创建一个新的分支,修复错字,拉入master以获取自那时以来的所有更改,然后推送,这样我就可以创建一个PR,但这不起作用。
2条答案
按热度按时间jslywgbw1#
没那么简单。。。你需要处理从旧分支构建的 new commits,这样git * 会认为 * 这些commits从未被合并过....可以这样做假设
branch-1
在合并到master
中时有2次直接提交。所以...这么做当你的分支已经提交了修复,这个分支可以被合并到
master
中,git不会抱怨之前的提交已经被合并。nwlls2ji2#
以免假设历史:
在哪
M
-合并特征RM
-该合并的reveresF
-功能分支提交X
-其他提交现在,如果你喜欢继续功能分支:
第二次合并
M2
的尝试将失败,因为RM
不仅反作用于M
提交,还反作用于F
提交。在这种情况下,如果你想避免重写历史(比如rebate of feature分支),我更喜欢创建包含revert of revert的helper branch。导致了这样的历史:
这个
RRM
提交恢复了RM
,并让旧的历史保持原样,不会与master
分支中的RM
提交交互。之后,将
feature
分支合并到主分支将不会有问题。另一种方法是在最新的
master
上选择F
提交(这在另一个答案中有所介绍)。