将一些分支更改包含(重新对齐)到其他分支

Include (realign) some branch changes into other branch

我的 GIT 项目中有这个分支情况:

红色和黄色未完成,我想将 蓝色 整合到 红色Yellow 而不关闭它们。在这种模式下,我可以继续在 Red/Yellow 更新的分支中工作,当我关闭它们时,我会发现冲突更少。

我该怎么做? rebase ? merge?

git merge 正是您所需要的。

您没有提供分支机构的名称。我假设他们的颜色就是他们的名字。

git checkout red
git merge blue

使红色分支成为当前分支,然后将自创建红色分支以来三个蓝色提交引入的更改引入其中。

相似,

git checkout yellow
git merge blue

将相同的三个提交带入黄色分支;请注意,蓝色分支之前已合并到黄色分支中,并且自上次合并以来只有这三个提交从黄色分支中丢失。

如果你向后跟随黄色分支,它的最后两个提交是从绿色分支(使用 git merge green 创建)合并,第三次提交是从蓝色分支(使用 [=14= 创建)合并]).

git rebase 做了不同的事情,它对你的目标没有用。当你有一个功能分支(场景中的红色和黄色分支)并且你想将它包含的提交移动到主(蓝色)分支之上时,可以使用它,就好像它们是在当前状态之后创建的一样蓝枝.

任你选:

  • git-merge 将创建历史记录,表明您的两个分支已成为一个分支,除非它是快进合并。这是大多数人的标准操作,但它引入了无用的合并提交,因为主线分支合并 特性分支这一事实是没有意义的(通常相反的方式很重要) .

    你可以在任何你想要的分支上用 git merge <mainline> 调用它。

  • git-rebase 将完成与合并相同的事情,还有重写你的历史的额外好处,这样看起来你的提交似乎是在主线分支上发生的任何工作之后出现的.这意味着历史更清晰,更线性。需要注意的是,你正在重写历史,如果还有其他人依赖于这些分支历史的状态,那么变基是一个不太好的选择。

    你可以在任何你想要的分支上用 git rebase <mainline> 调用它。

如果您想稍微试验一下,可以 use this web-based tool 它可以复制 很多 您在执行这些操作后在提交历史记录中看到的内容动作。