目錄
-
rebase的幾個操作
-
rebase與merge的比較和實際操作
-
結合動圖加深理解rebase
1.rebase的幾個操作
- git rebase [分支名]
- git rebase --continue 繼續rebase
- git rebase --abort 放棄本次rebase
2.rebase與merge的比較和實際操作
相比較於git merge,我們在初級篇已經學習過merge操作,每次使用merge合並分支時候,會將兩個分支又合到一條分支上,這樣造成的問題就是在一個git分支樹上好多交叉,如果你希望commit的時候不要出現分支,可以使用rebase替代
我們新建一個git項目,然后創建一個空的test.js文件並commit,這時候的分支圖是這樣的
接下來我們在master分支修改test.js文件並commit,然后創建一個分支branch1,並在branch1上修改test.js文件,並提交。然后我們看下分支圖
如果這時候我們在master分支合並branch1的話
git checkout master
git merge branch1
打叉了!打叉了!打叉了!
ok,我們回退到上一個版本,回退后分支是這樣的
試下使用rebase的效果,進行如下操作
git checkout branch1
git rebase master
報了個錯,說rebase的時候有沖突,那么我們vim test.js沖突的地方修復,然后執行下面
git add .
git rebase --continue // 繼續rebase (同時普及一下另外一個git rebase --abort 放棄本次rebase)
這個時候分支是這樣的:
然后我們回到master,去merge branch1(這樣的目的是因為能從上圖看到,master所指向的位置靠后了,要將其更新到最前面)
git checkout master
git merge branch1
3.結合動圖加深理解rebase
git merge branch1
git checkout branch1
git rebase master
git checkout master
git merge branch1
為什么需要再branch1上rebase而不是在master上直接rebase?看下圖
總結
其實就從字面意思來理解在branch1上git rebase master就是說把branch1的基准重新定位到master分支指向的最新一次commit處,