当我压缩父分支的提交并将其合并到主分支时,子分支会发生什么?

What happens to the child branch when I have squashed the commits from parent branch and merged it into master?

我的分支是这样的

M1 --- M2 --- M3 --- ............. --- M50 --- M51
               \
                \
                 P1 --- P2 --- P3 --- P4
                                \
                                 \
                                  C1 --- C2 --- C3

这里M是主提交 P 是父分支提交 C 是子分支提交

我正在开发一个功能 (F1) 并创建了一个分支 (Parent) 并提交到 P3。此时我开始研究新功能(F2),但由于我需要 P3 提交更改来处理新功能,我在 P3 创建了一个分支(子)。我收到了一条功能 F1 的评论评论,并在父分支中提交了 P4。

没有冲突,所以我重新设置了子分支的基址以获得类似的东西。

M1 --- M2 --- M3 --- ............. --- M50 --- M51
               \
                \
                 P1 --- P2 --- P3 --- P4
                                       \
                                        \   
                                         C1 --- C2 --- C3

现在我的父分支提交被压缩并与 M52 的主分支合并。在这里,我对我的子分支发生的事情感到困惑。我猜是这样的。

M1 --- M2 --- M3 --- ............. --- M50 --- M51 -- M52(contains squashed commits of P1-P4)
               \
                \
                 C1 --- C2 --- C3

如果我的猜测是正确的,那么正确的命令应该是什么?如果我的猜测也是错误的,请告诉我下一步。

M1 --- M2 --- M3 --- ............. --- M50 --- M51 -- M52
                                                        \
                                                         \
                                                          C1 --- C2 --- C3

我相信它又是一个基于 onto 的变基,但我不确定它到底应该是什么?很多团队在 master 上工作并合并他们的分支,所以我不想自己承担错误命令的风险。

提前致谢。

在父分支的“压缩和合并”之后,您的历史将如下所示:

M1 --- M2 --- M3 --- ............. --- M50 --- M51 --- M52
               \
                \
                 P1 --- P2 --- P3 --- P4  # <- the 'Pxx' commits still exist
                                       \
                                        \   
                                         C1 --- C2 --- C3

您正在查找的变基命令是:

git rebase --onto M52 P4 child

之后,您将不得不强制推送您的 child 分支以在远程仓库上更新它:

git push --force-with-lease origin child