git高級淺入之rebase與merge差異


目錄

  • 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處,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM