git merge和git rebase區(qū)別筆記

初始場景:
基于正常的開發(fā)分支修改幾個(gè)小bug届慈,然后在合并到開發(fā)分支上。


初始分支

git merge

git checkout feature
git merge hotfix
或者
git merge hotfix feature

合并后的節(jié)點(diǎn)會(huì)按照commit時(shí)間順序排列忿偷。
git merge操作會(huì)在當(dāng)前分支上生成一個(gè)新的commit節(jié)點(diǎn)金顿,并保留所有的操作歷史節(jié)點(diǎn),對(duì)問題的追溯很有益處鲤桥,但是會(huì)產(chǎn)生大量無用commit節(jié)點(diǎn)揍拆,使提交歷史記錄很冗長。
如下圖:

git merge

git rebase

git checkout feature
git rebase hotfix

rebase操作后的歷史并不會(huì)按commit時(shí)間順序排列茶凳。
rebase操作會(huì)找出當(dāng)前分支(feature)的所有修改點(diǎn)嫂拴,并將其生產(chǎn)一系列布丁(4-6-8)慧妄;然后以被rebase分支(hotfix)最后一個(gè)節(jié)點(diǎn)(9)為開始點(diǎn)顷牌,將feature上生成的布丁應(yīng)用到hotfix上(1-2-3-5-7-9-4-6-8)。
如上描述塞淹,rebase操作能使提交歷史更干凈美觀,可忽略很多不必要的節(jié)點(diǎn)罪裹;但是這樣等同于重寫commit歷史記錄饱普,可追溯性較差运挫。
如下圖:

git rebase

另外,rebase提供了一些補(bǔ)充操作

git checkout feature
git rebase -i hotfix

執(zhí)行以上命令會(huì)彈出編輯框套耕,如下谁帕,(IDE可能會(huì)有GUI交互窗)。

  14 pick 9fa8fe5c4 add 1
  15 pick 94e3c2cb7 add 2
  16 pick 1bc1c9152 add 3
  17 
  18 # Rebase 6041e1b91..5b88fbfaa onto 6041e1b91 (16 commands)
  19 #
  20 # Commands:
  21 # p, pick = use commit
  22 # r, reword = use commit, but edit the commit message
  23 # e, edit = use commit, but stop for amending
  24 # s, squash = use commit, but meld into previous commit
  25 # f, fixup = like "squash", but discard this commit's log message
  26 # x, exec = run command (the rest of the line) using shell
  27 # d, drop = remove commit
  28 #
  29 # These lines can be re-ordered; they are executed from top to bottom.
  30 #
  31 # If you remove a line here THAT COMMIT WILL BE LOST.
  32 #
  33 # However, if you remove everything, the rebase will be aborted.
  34 #
  35 # Note that empty commits are commented out

解釋下幾個(gè)參數(shù):

  • pick就是cherry-pick
  • reword 就是在cherry-pick的同時(shí)你可以編輯
  • commit message冯袍,它會(huì)在執(zhí)行的時(shí)候跳出一個(gè)界面讓你編輯信息匈挖,當(dāng)你退出的時(shí)候,會(huì)繼續(xù)執(zhí)行命令
  • edit 麻煩點(diǎn)康愤,cherry-pick同時(shí) 儡循,會(huì)停止,讓你編輯信息征冷,完了后择膝,你要用git rebase --continue命令繼續(xù)執(zhí)行,相對(duì)上面來說有點(diǎn)麻煩检激。
  • squash肴捉,合并此條記錄到前一個(gè)記錄中,并把commit message也合并進(jìn)去 叔收。
  • fixup 齿穗,合并此條記錄到前一個(gè)記錄中,但是忽略此條commit message

我們可以使用-i參數(shù)達(dá)到重新排序commit歷史饺律、編輯提交信息窃页、刪除無用提交、合并同問題提交等操作蓝晒。

rebase使用原則:
一旦分支中的提交對(duì)象發(fā)布到公共倉庫腮出,就不要對(duì)該分支進(jìn)行rebase操作。

參考:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芝薇,一起剝皮案震驚了整個(gè)濱河市胚嘲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洛二,老刑警劉巖馋劈,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異晾嘶,居然都是意外死亡妓雾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門垒迂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來械姻,“玉大人,你說我怎么就攤上這事机断】” “怎么了绣夺?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長欢揖。 經(jīng)常有香客問我陶耍,道長,這世上最難降的妖魔是什么她混? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任烈钞,我火速辦了婚禮,結(jié)果婚禮上坤按,老公的妹妹穿的比我還像新娘毯欣。我一直安慰自己,他們只是感情好晋涣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布仪媒。 她就那樣靜靜地躺著,像睡著了一般谢鹊。 火紅的嫁衣襯著肌膚如雪算吩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天佃扼,我揣著相機(jī)與錄音偎巢,去河邊找鬼。 笑死兼耀,一個(gè)胖子當(dāng)著我的面吹牛压昼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瘤运,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼窍霞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拯坟?” 一聲冷哼從身側(cè)響起但金,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎郁季,沒想到半個(gè)月后冷溃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梦裂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年似枕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片年柠。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凿歼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毅往,我是刑警寧澤牵咙,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布派近,位于F島的核電站攀唯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏渴丸。R本人自食惡果不足惜侯嘀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谱轨。 院中可真熱鬧戒幔,春花似錦、人聲如沸土童。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽献汗。三九已至敢订,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間罢吃,已是汗流浹背楚午。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尿招,地道東北人矾柜。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像就谜,于是被迫代替她去往敵國和親怪蔑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355