2016-02-25 234 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)我更喜歡在開發過程中或在準備拉取請求之前重新綁定我的功能分支。這是每個人自己的偏好。