多人開發時,通常都會使用git來進行代碼管理。
使用過git的童鞋確定對git pull
git push
git merge
很是熟悉。那麼,你們有沒有了解過git rebase
命令呢?html
rebase翻譯成中文叫「變基」,相比merge,rebase並無進行合併操做,該命令只是提取了當前分支的修改,將其複製在了目標分支的最新提交後面。git
拿工做中常見的場景來舉例,小志和其餘小夥伴一塊兒開發一個項目。
他們基於master分支生成develop分支,小志在develop分支上進行了兩個提交(develop分支修改1,develop分支修改2)。與此同時,其餘小夥伴也進行了兩次提交(master分支修改1,master分支修改2),而且已經合併到了master分支。
spa
如今要將小志的代碼合併到master分支上而後進行發版上線。.net
咱們都習慣了這樣操做:
在master分支上,使用git merge
命令把develop分支合併到master分支。
由圖可見,合併時會新增一個節點f87cb3b。其實這個節點並無實際意義。翻譯
讓咱們來嘗試使用下rebase命令。
第一步,在develop分支上使用git rebase
命令,提取develop分支上的修改,將其複製到master分支的最新提交後面。
第二步, 切換到master分支,使用git merge
命令把develop分支合併到master分支。
重點來了,master的分支節點很是整潔,沒有相似merge branch 'develop' 信息的多餘節點。並且看起來會更清楚:彷彿全部修改都是在一根線上前後進行的,儘管實際上它們本來是同時並行發生的。3d
這樣可讓更好追蹤master分支上的變動,更好地對master分支進行維護。code
若是僅僅使用merge,咱們可能會獲得這麼一個讓人頭昏眼花的分支節點圖:
使用rebase的目的,就是想要獲得一個乾淨漂亮的歷史節點圖,利於分支的維護。htm