gIt rebase 的三種作用
1.拉代碼rebase
2.合並分支rebase
3.處理commit提交記錄
1.拉取代碼rebase
正常我們在拉取遠程代碼時使用 git pull
git pull === git fetch + giet merge 是使用fast-forwad模式,如果出現沖突后,解決沖突且重新提交記錄,則會出現分支錯亂的問題,
輸入命令查看log記錄 git log --graph --pretty=oneline --abbrev-commit
強迫症的同學一定會受不了,因此出現git pull --rebase
git pull --rebase === get fetch + git rebase
如上圖,當使用git pull --rebase 出現沖突
則先解決沖突后 再
git add .
git rebase --continue
此刻,當前commit提交記錄就變成一條線了。注意之后若重新提交則需要 git push -f 即為強制提交替換遠程commit記錄。
2.合並分支rebase
當你接到需求后從master分支切出dev分支,然后dev分支開發完成后需要先切回master分支,git pull --rebase 拉取最新的代碼,再切回dev分支,這時候你需要先合並master的最新代碼,正常git merge 后會出現commit提交錯亂,如下圖
這樣就會讓人感覺強迫症犯了。
因此,我們可以是用git rebase來合並,如上述,不使用git merge master, 使用git rebase master 后記錄如下圖
可以看到,master和dev將基線以后的commit進行了排序,變基的dev分支在前面,合並的master修改commit再后。 最后提交git push -f。 注意需要需要強制提交,因為變基后的dev和遠程的dev commit記錄順序不一致。
3.處理commit提交記錄
當我們需要處理commit記錄時, 可以使用git rebase -i對分支記錄操作, 常見的如刪除,合並多個commit
執行git rebase -i head~3, 即前三次提交記錄,如下圖,執行后進入vim編輯器,將對應的commit前面的pick改為drop即為刪除,squash為合並。
當使用git rebase -i修改后發現修改內容有誤,想恢復修改之前的可以 執行 git rebase --abort 來恢復