相信有相信有軟體協作開發經驗的人都對git是什麼不陌生吧,不過他的指令百百種涵括了各種功能你都瞭解了嗎?
我就是因為慣用其他版本控制軟體(Sourcetree)的重度使用者,每次用終端機輸入指令操作都還要先估狗過,實際上直接輸入指令能達成的功能可比Sourcetree多得多了。
當初面試被問到rebase & merge的不同我只答得出一個會有commit紀錄一個不會,不過這兩者除了合併commit紀錄以外其他的我卻是沒仔細研究過的(結果一查資料發現網路上其實有超詳細解析??)。這次就藉由鐵人賽來好好認識他們倆的用途吧~
git merge是用來合併來自其他分支的修改,會產生一個額外的 Commit 來接合兩邊分支
指令:
# 先切換到主分支
$ git checkout master
# merge 有做修改的分支
$ git merge <branch>
rebase(re-base:有“重新定義分支的參考基準”的意思) ,git rebase是將其他分支(通常為主分支)當成基礎,在你本身有做修改的分支上,使我們的分支在基礎分支上再增生上去,功能等同合併版本。rebase無commit紀錄。
不過除了此功能她還能修改歷史上的commit紀錄,不過這邊就與merge有所差異了暫不討論。
指令:
# 切換至有修改的分支:
$ git checkout <branch>
# 然後執行 Rebase 動作,把 master 當成我們的基礎版本:
$ git rebase master
光看指令其實就可以感覺到兩者的不同了吧,
圖片來源:https://hackernoon.com/git-merge-vs-rebase-whats-the-diff-76413c117333
說到這其實也沒有哪個好或不好的的情形出現,這兩者功能在專案上都非常實用,大家就看主管要求或是自己喜好來決定吧~
好隨意的結尾
資料來源:
https://www.maxlist.xyz/2020/05/02/git-merge-rebase/
https://gitbook.tw/chapters/branch/merge-with-rebase