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

时间:2015-06-12 06:44:36

标签: git git-merge

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

enter image description here

  • 蓝色 是我的主要分支
  • 红色黄色是我正在编写不同功能的分支

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

我该怎么做? rebasemerge

2 个答案:

答案 0 :(得分:0)

git merge完全符合您的需要。

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

git checkout red
git merge blue

使红色分支电流然后将红色分支创建后三个蓝色提交引入的更改带入其中。

类似,

git checkout yellow
git merge blue

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

如果你向后追随黄色分支,它的最后两个提交是从绿色分支合并(使用git merge green创建),第三个提交是蓝色分支的合并(使用git merge blue创建)

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

答案 1 :(得分:0)

选择:

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

    您可以使用git merge <mainline>在您想要的任何分支上调用此内容。

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

    您可以使用git rebase <mainline>在您想要的任何分支上调用此内容。

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