git rebase原理和使用


1、rebase與merge的區別

git rebase: 變基/衍合,意即改變分支的根基。rebase的功能類似於merge,從某種程度上來說,rebase與merge可以完成類似的工作,不過二者的工作方式有着顯著的差異。

  merge的工作方式

 

  rebase的工作方式: git checkout mywork,  git rebase origin   切換到mywork分支,基於mywork分支將origin合並進來(以變基rebase的方式合並進來)。

  注意:rebase會修改分支提交的歷史。

 

2、rebase注意事項

  rebase過程中也會出現沖突,解決沖突后,使用git add添加,然后執行git rebase --continue,接下來git會繼續應用余下的補丁。

  任何時候都可以通過如下命令終止rebase,分支會恢復到rebase開始前的狀態 git rebase --abort

  rebase最佳實踐:

  不要對master分支執行rebase,否則會引起很多問題。

  一般來說,執行rebase的分支都是自己的本地分支,沒有推送到遠程版本庫。

 

3、merge和rebase使用比較

3.1、merge使用

  初始化一個git倉庫

  初始化倉庫后,默認有一個master分支,在master分支創建一個文件

   基於master分支創建兩個分支:develop分支和mywork分支

   切換到develop分支,創建兩次提交

 

 

 

   切換到mywork分支,創建兩次提交

 

   先使用merge合並看下效果

 

  解決沖突

 

  將不要的刪除,保存退出。然后git add a.txt, git commit

 

   使用merge合並的效果:

 

  使用gitk查看

 

3.2、rebase使用

  為了測試rebase,進行一次版本回退

 

  執行 git rebase

   vi a.txt 刪除不要的代碼,保存退出

  解決完這次沖突后git rebase --continue繼續后面的補丁,后面由於不會再有沖突,所以自動合並完成。查看a.txt文件內容:

  gitk查看,提交是一條線,沒有分叉

 

  查看日志,mywork分支的兩次提交以補丁的形式合並到devlop的最后一次提交上,並且這兩次補丁提交id改變了。


免責聲明!

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



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