git rebase 與 merge
为情所困
为情所困 2017-04-27 09:03:25
0
1
567

git rebase 是不是就是跟 merge master 到你的 branch 產生程式碼的效果一樣的, 不考慮 history log 等其他的因素

为情所困
为情所困

全部回覆(1)
为情所困

你都說不考慮 History Log 了,那就沒啥可說的了…

不過實際上 Rebase 是沒有方向約束的,你可以把 Master Rebase 到你的分支,也可以反過來,任何分支 Rebase 到任何目標都是可以的。

本質上 Merge 就是無視兩棵樹在歷史記錄上的差異,只是在執行 Merge 那一刻的將差異進行合併而已;而 Rebase 則是要梳理兩棵樹在歷史記錄上的差異,然後才是合併。

你可以形象的記憶:

  1. Merge 就是“合而為一”(注意我說的是“而”,不是“二”,因為 Merge 並非只能合併兩方)
  2. Rebase 則是「把你放在我下面,我要站在你上面,最後合體」。

舉個例子,我從 master 分離一個分支出去,在此基礎上做了一些提交,而此時 master 上也有別人的新提交了。如果我在新分支 merge master,則我的分支上會出現一個新的 commit,記錄下我的和 master 上的變更的合體。就像兩條線合成了一點。如果我用 rebase,則從我分離的那一點開始,master 上的新提交先填充進來,然後再把我自己做的提交重新寫在更新的上面。於是內容還是合併了,但歷史記錄則是順序的,從你的角度來看就好像從未和 master 分離過一樣。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板