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 注意事項
git rebase -i HEAD~4