如何在共享远程分支上git rebase merge提交?

时间:2016-02-25 18:41:49

标签: git git-merge git-rebase

以下是场景:有一个名为“new_feature_x”的远程功能分支和两个开发人员John和Max。 “new_feature_x”日志如下所示:

5:[最大 - 更新按钮颜色]
4:[约翰 - 合并主人提交]
3:[约翰 - 更新API调用]
2:[最大 - 固定按钮文本]
1:[约翰 - 首次提交new_feature_x]

现在该功能已完成,John希望在合并到master之前将日志清理为单个提交。他这样做了:

git rebase -i -p master

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

两个问题:

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

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

1 个答案:

答案 0 :(得分:1)

关于你的第一个问题。

这是您描述的情景。如您所见,commit 3只是master分支中已存在的一个。您的分支仅包含合并提交。 enter image description here

执行git rebase -i master时,您将在主分支上应用功能分支提交。你最终会得到如下图所示的树。

enter image description here

现在,您可以将分支中的提交压缩为一个并合并为主。

2)我更喜欢在开发期间或在准备拉取请求之前在master上重新设置我的功能分支。这是每个人自己的偏好。