rebase
:顧名思義 ==變基== git
假設如今從master
分支上,切出一個本地開發分支mydev
服務器
git checkout -b mydev
這時候master
上的git
記錄是這樣子的code
A-->B-->C-->D
這個時候另一個開發人員把ta的dev分支合併到master分支了tadev
blog
A-->B-->C-->D |-->E-->F-->G
git lg or git log
實際上如今master
上的分支的git 提交記錄已是這樣子的了:開發
A-->B-->C-->D-->E-->F-->G
可是你本地上的分支仍是這樣的,你分別了提交了 3個 commit
記錄。get
|—->M-->N-->O A-->B-->C-->D
這時,你的代碼開發完成了,須要合併代碼。這時候有兩種選擇:it
直接ast
git merge
或者coding
通過 git rebase 再提交 git merge
若是直接git merge
,假設你提交commit
的時間和剛纔合併進去的其餘人的dev分支是有重合的:di
A-->B-->C-->D |-->E |-->F-->G |-->M-->N |-->O
這樣的提交的記錄就比較亂,假設如今須要回退代碼什麼的,就有點小麻煩了,就須要一個文件去回退。對於多人協做的話 就比較須要git rebase
先對mydev
分支進行 git rebase
操做
這時候分支的提交記錄就會變爲以下所示:
A-->B-->C-->D-->E-->F-->G |-->M-->N-->O
會把mydev
分支新增的commit
記錄新增在master分支最新的後面,這個時候push
分支,就須要強制更新你的分支。再提交merge
。
git push -f
變基的做用就是修整歷史,將分支歷史併入主線。
git rebase
前須要確保master
分支爲最新。若是git rebase
以後提示衝突的話,須要解決衝突:
git add
commit
, 繼續 rebase
git rebase --continue
git rebase
還有一些其餘的操做,
git rebase
git rebase --abort
git rebase -i HEAD~4 合併最近4次提交
http://blog.codingplayboy.com...