1. 利用git base來合并多次commit
git rebase -i HEAD~2 //合并最近倆次的commit
- pick 的意思是要會執(zhí)行這個 commit
- squash 的意思是這個 commit 會被合并到前一個commit
- drop 代表合并提交中排除這個提交
git rebase --abort
2. 分支的操作
2.1.我們先從 master
分支切出一個 dev
分支,進行開發(fā):
git:(master) git checkout -b feature1
)
2.2.這時候米间,你的同事完成了一次 hotfix
膘侮,并合并入了 master
分支,此時 master
已經(jīng)領(lǐng)先于你的 feature1
分支了:
2.3.恰巧,我們想要同步 master
分支的改動雕薪,首先想到了 merge
,執(zhí)行:
git:(feature1) git merge master
圖中綠色的點就是我們合并之后的結(jié)果盏档,執(zhí)行:
git:(feature1) git log
就會在記錄里發(fā)現(xiàn)一些 merge
的信息蜈亩,但是我們覺得這樣污染了 commit
記錄,想要保持一份干凈的 commit
畅涂,怎么辦呢道川?這時候, git rebase
就派上用場了。
2.4.讓我們來試試 git rebase
赘理,先回退到同事 hotfix
后合并 master
的步驟:
2.5.使用 rebase
后來看看結(jié)果:
git:(feature1) git rebase master
這里補充一點: rebase
做了什么操作呢商模?
首先, git
會把 feature1
分支里面的每個 commit
取消掉施流;
其次瞪醋,把上面的操作臨時保存成 patch
文件,存在 .git/rebase
目錄下践盼;
然后宾巍,把 feature1
分支更新到最新的 master
分支;
最后肄程,把上面保存的 patch
文件應用到 feature1
分支上选浑;
從 commit
記錄我們可以看出來, feature1
分支是基于 hotfix
合并后的 master
褂始,自然而然的成為了最領(lǐng)先的分支描函,而且沒有 merge
的 commit
記錄狐粱,是不是感覺很舒服了肌蜻。