1. 程式人生 > 其它 >談談對git rebase的理解

談談對git rebase的理解

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 來恢復