命令:
git rebase [-i | --interactive] [--exec ] [--onto ]
git rebase [-i | --interactive] [--exec ] [--onto ] --root
git rebase --continue | --skip | --abort | --quit | --edit-todo | --show-current-patch
場景:
有一條**線master線,同時有條新需求開發線dev線。master線從b開出分支dev線後,一直在做bug修復(c,d)。如下圖:
此時,dev線需要合併master線修復的bug,以免重複開發。那我們可以用到git rebase命令。
執行:git rebase --onto master dev,成功後,dev線就會合併c和d提交的記錄。如下圖:
另一種場景:
兩條新功能開發線,一條dev,dev1是在dev的基礎上開的新分支,可能dev1的**更穩定,此時需要將dev1改為master的一條分支,同時將master線上修改的**與dev1進行合併。
此時,可以執行命令:git rebase --onto master dev dev1,操作成功後,dev1線將有master上的最新**,同時又包含新開發的功能:
第三種場景:
假設現在有一條分支dev1,發現b和c提交的**有問題,需要把b和c提交的**去除,那可以執行命令:
git rebase --onto dev1~4 dev1~1 dev1
執行後,b和c將會從dev1分支的提交記錄中去除。
git rebase命令主要引數解析:
--onto:
newbase指的是需要rebase**的起點,newbase可以是分支(branch),也可以是任意的提交記錄(commit1)。rebase成功後,將以newbase為**分支起點。
:需要與newbase比對的分支或提交記錄。
:需要rebase的工作分支。預設為head,例如dev1
git rebase --continue
當處理完衝突後,可以使用該命令讓rebase繼續。
git rebase --abort
終止rebase操作,將head設定為rebase之前的分支。如果指定了
,則head將重置為
。否則,head將被重置為rebase之前的分支。
git rebase --quit
終止rebase操作,但不會將head重置為原來的分支。index和working tree將不會發生任何改變。
git rebase --autostash
在rebase操作之前自動stash當前分支未提交的**,在rebase操作結束後,自動將stash的記錄進行unstash,並與rebase後的**合併。注意,此操作有可能會導致嚴重的衝突(conflict),謹慎使用。
git rebase -m
git rebase --merge
進行rebase操作的時候,同時使用merge進行**合併。需要注意的是,在進行rebase merge產生衝突的時候,ours為指定的分支,theirs為
指定的分支。原因是,rebase merge work的工作原理為,將
上的所有提交記錄在分支上進行重提交。
git 命令之git rebase 用法
1.出現情況的背景 當你提交的 後,管理員發現,您的 不能提交到伺服器上,主要原因在於,你的commit 中和伺服器中的有些commit不再同一時間軸上,即 你的有些commit要插入到伺服器中的某些commit之間,這樣就會造成 的衝突。所以這個時候就要使用git rebase。假如,你平時使用的...
Git rebase用法小結
rebase在git中是乙個非常有魅力的命令,使用得當會極大提高自己的工作效率 相反,如果亂用,會給團隊中其他人帶來麻煩。它的作用簡要概括為 可以對某一段線性提交歷史進行編輯 刪除 複製 貼上 因此,合理使用rebase命令可以使我們的提交歷史乾淨 簡潔!特別適用於gerrit鉤子丟失導致push失...
git 命令之git rebase 最詳細用法
1.出現情況的背景 當你提交的 後,管理員發現,您的 不能提交到伺服器上,主要原因在於,你的commit 中和伺服器中的有些commit不再同一時間軸上,即 你的有些commit要插入到伺服器中的某些commit之間,這樣就會造成 的衝突。所以這個 時候就要使用git rebase。假如,你平時使用...