2016-02-25 261 views
0

这里是场景:有一个名为“new_feature_x”的远程功能分支和两个开发人员John和Max。所述 “new_feature_x” 日志看起来像这样:如何git rebase合并提交共享远程分支?

5:[最大 - 更新按钮颜色]
4:[约翰 - 合并从主提交]
3:[约翰 - 更新API调用]
2:[马克斯 - 固定按钮文本]
1:约翰 - 第一次提交的new_feature_x]

现在的功能是完成和约翰希望将日志清理成一个单一的提交前合并成高手。他这样做:

git的重订-i -p主

但只显示提交4和5,他确实修正了这两个,但后来,提交1,2,3仍然在日志中。

两个问题:

1)如何合并一切成一个承诺?为什么在我执行“git rebase -i -p master”时没有出现合并提交之前的所有内容?

2)此方案未来的最佳策略/工作流程是什么? John和Max不应该在功能分支中使用合并提交?我记得在某个地方读到一个永远不应该为远程共享分支推送rebase的地方。从主服务器获取更改并将其推送到远程分支的最佳方式是什么?目标是,当功能完成后,它可以作为一个简单的提交合并回主服务器。

回答

1

关于你的第一个问题。

这是你描述的场景。正如你所看到的,提交3只是一个已经存在于master分支中的提交。您的分支仅包含合并提交。 enter image description here

当你做git rebase -i master,你正在主分支应用功能分支提交。如下图所示,您将以树结束。

enter image description here

现在,您可以壁球犯的分支之一,合并掌握。

2)我更喜欢在开发过程中或在准备拉取请求之前重新绑定我的功能分支。这是每个人自己的偏好。