git rebase

1 使用git rebase的通常開發過程git

假設Git目前只有一個分支master。開發人員的工做流程是單元測試

git clone master branch
在本身本地checkout -b local建立一個本地開發分支
在本地的開發分支上開發和測試
階段性開發完成後(包含功能代碼和單元測試),能夠準備提交代碼
首先切換到master分支,git pull拉取最新的分支狀態
而後切回local分支
經過git rebase -i 將本地的屢次提交合併爲一個,以簡化提交歷史。本地有多個提交時,若是不進行這一步,在git rebase master時會屢次解決衝突(最壞狀況下,每個提交都會相應解決一個衝突)
git rebase master 將master最新的分支同步到本地,這個過程可能須要手動解決衝突(若是進行了上一步的話,只用解決一次衝突)
而後切換到master分支,git merge將本地的local分支內容合併到master分支
git push將master分支的提交上傳
本地開發分支能夠靈活管理測試

2 git rebase是什麼對象

git rebase處理的對象是本地分支,它將上游分支的修改合入到本地分支,好比將主幹分支的修改合入到本地分支。本地分支原本是基於主幹的某次提交,如今主幹分支有新的提交,git rebase以後,本地分支將基於主幹分支最新的提交。正如rebase的含義,原本是base主幹分支的老的提交,如今rebase,基於主幹分支最新的提交。開發

git rebase的時候應該切換到本地分支,而後git rebase master,解決衝突以後,git rebase --continue。同步

3 將本地分支合入到主幹分支工作流

切換到主幹分支,git checkout master,而後git merge dev,若是出現衝突的話,解決衝突,而後git add/git commit就行。it

分支合併是主幹分支最新的提交、feature分支最新的提交和它們的最近祖先提交三者之間的合併,而後生成一個新的提交。若是建立分支以後主幹不前進的話,合併分支的時候不會生成新的提交。ast

4 git rebase用在本地分支上嗎?git rebase master分支到本地分支了以後呢?若是有修改的話,再如何合入master分支呢?di

git rebase會把本地分支上的提交保存爲patch,從新生成新的提交,保留master上的提交歷史。因此,git rebase前最好用git rebase -i HEAD~3來合併本地的提交。再合入master分支的話,就到master分支,把本地的分支merge進去就行。而後再提交到遠程庫。 

5 注意事項

「我我的推薦你們開發的時候, 儘可能及時rebase上游分支(我習慣是每週merge一次),有衝突提早就fix掉,即便咱們本身的分支開發了好久(哪怕是幾個月),也不會積累太多的conflict,最後合併進主分支的時候特別輕鬆, 很是反對從master check出新分支,本身悶頭開發幾個月,結果最後merge進主分支的時候,一大堆衝突,本身還嗷嗷叫的行爲。」
6 git merge作的事情
將兩個分支的當前快照和他們的共同祖先三者進行了一個merge,而後生成一個新的提交。
7 git rebase相關的命令
經過下面的命令合併本地的4次提交。
git rebase -i HEAD~4
相關文章
相關標籤/搜索