深入探索Git Rebase:提升你的分支合併技能 | Git

Git rebase 是一個強大而又常被忽視的功能,它允許開發人員重新定義提交的歷史,提供了更加乾淨、簡潔的提交歷史。本篇將深入探討Git rebase的原理、使用方式以及常見應用場景。

什麼是Git Rebase?

Git rebase 是一種用於整合不同分支上的提交歷史的技術。它與Git merge 相似,但是兩者之間有著重要的區別。當我們使用Git merge 時,Git 會在歷史上創建一個新的合併提交,將兩個分支的歷史合併在一起。而當我們使用Git rebase 時,Git 會將一個分支的提交歷史移至另一個分支的最後,然後再進行合併。這樣做的好處是,它可以創建一個更加線性、整潔的提交歷史,減少不必要的合併提交。

使用rebase 前

m1  m2   m3
 o---o---o  master
         \
          o---o---o---o  features/login
         a1  a2  a3   a4

使用rebase 後

 m1  m2  m3
 o---o---o---o---o---o---o  master  
             b1  b2  b3  b4

知識點

其實git rebase的移動不是單純搬移,而是將原本features/login的commits都複製,然後再移動到master上 如果你仔細觀察,可以發現rebase 前後,你的commit的sha-1的值被改變了

注意點

Git rebase 只適合使用在local,不適合對已經發佈到遠端倉庫的commit進行修改

如何使用Git Rebase?

使用Git rebase 的基本流程如下:

  1. 確定當前分支是你想要重新定義歷史的分支。假設我們想要將 features/login 分支的提交紀錄rebase到 master 分支上。

  2. 切換回master 分支。

git switch master
  1. 執行 rebase 操作。
git rebase features/login --interactive
  1. 解決可能出現的衝突。
  2. 如果不知道該怎麼做下一步使用 rebase –continue,指令會提示你下一步該什麼
git rebase --continue
  1. 完成 rebase。

常見應用場景

  1. 整理提交歷史 :當開發人員在本地進行開發時,可能會進行多次提交。使用 rebase 可以將這些提交整理成一個清晰、有邏輯的提交歷史。
  2. 合併分支 :當開發人員在開發新功能時,可能會在不同的分支上進行工作。使用 rebase 可以將這些分支的提交歷史整合成一個。
  3. 解決衝突 :當進行 rebase 操作時,可能會遇到衝突。這時開發人員需要解決衝突並繼續 rebase 操作。

結語

Git rebase 是一個強大的工具,可以幫助開發人員管理提交歷史,提供更加乾淨、簡潔的歷史記錄。但是需要注意的是,在進行 rebase 操作時,可能會修改提交歷史,因此需要小心使用,確保不會對團隊合作造成影響。 希望本文能夠幫助你更好地理解和應用Git rebase。