iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
Modern Web

前端技術研究系列 第 3

rebase merge到底哪個好啊

  • 分享至 

  • xImage
  •  

前言:

相信有相信有軟體協作開發經驗的人都對git是什麼不陌生吧,不過他的指令百百種涵括了各種功能你都瞭解了嗎?
我就是因為慣用其他版本控制軟體(Sourcetree)的重度使用者,每次用終端機輸入指令操作都還要先估狗過,實際上直接輸入指令能達成的功能可比Sourcetree多得多了。
當初面試被問到rebase & merge的不同我只答得出一個會有commit紀錄一個不會,不過這兩者除了合併commit紀錄以外其他的我卻是沒仔細研究過的(結果一查資料發現網路上其實有超詳細解析??)。這次就藉由鐵人賽來好好認識他們倆的用途吧~

merge

git merge是用來合併來自其他分支的修改,會產生一個額外的 Commit 來接合兩邊分支

指令:

# 先切換到主分支
$ git checkout master

# merge 有做修改的分支
$ git merge <branch>

rebase

rebase(re-base:有“重新定義分支的參考基準”的意思) ,git rebase是將其他分支(通常為主分支)當成基礎,在你本身有做修改的分支上,使我們的分支在基礎分支上再增生上去,功能等同合併版本。rebase無commit紀錄。
不過除了此功能她還能修改歷史上的commit紀錄,不過這邊就與merge有所差異了暫不討論。

指令:

# 切換至有修改的分支:
$ git checkout <branch>

# 然後執行 Rebase 動作,把 master 當成我們的基礎版本: 
$ git rebase master

光看指令其實就可以感覺到兩者的不同了吧,

  1. merge會有commit紀錄
  2. merge使主分支增加其他分支的commit,其他分支是不會受影響與改變的
  3. rebase是主分支不變,而被rebase的分支的原有基礎上則會加入主分支與其不同的commit

對比圖
圖片來源:https://hackernoon.com/git-merge-vs-rebase-whats-the-diff-76413c117333

說到這其實也沒有哪個好或不好的的情形出現,這兩者功能在專案上都非常實用,大家就看主管要求或是自己喜好來決定吧~
好隨意的結尾/images/emoticon/emoticon25.gif

資料來源:
https://www.maxlist.xyz/2020/05/02/git-merge-rebase/
https://gitbook.tw/chapters/branch/merge-with-rebase


上一篇
props state 功能定義傻傻分不清楚
下一篇
超突然決定來介紹Generator function吧
系列文
前端技術研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言