home > tools > versionControl > git >

git中merge還是rebase?git之圣戰merge vs rebase

Author:[email protected] Date:

你覺得commit太亂看起來不舒服的話,就去改輸出commit的程序,不要改數據本身。如果經常需要rollback回滾就用rebase。盡量及時rebase上游分支,發現有沖突,merge。為了追求Git的線好看,在團隊合作中使用rebase說輕點是舍本逐末

程序員間的圣戰蠻多:

比如tab 還是2個空格(支持tab,省事)

比如可以省略分號 要不要加上?(支持加上,因為分號加上又不要手動,IDE自動干了,有可以增加代碼的可讀性)

比如 git merge vs rebase,這個個人沒有一邊倒,但是還是支持merge多一點。在此問題上,覺得輪子哥的這句話特別有道理:

"git rebase就是那種典型的,使用MVC模型的時候喜歡想著用Model來代替View的這種人,會喜歡做的事情。其實也沒有什么好和不好,但是保留原始數據顯然是相當重要的。你嫌圖形不好看的話,自己寫一個程序去畫就好了。就像沒有人會在SQLServer里面真的用一棵樹來表示樹形的留言一樣。你覺得commit太亂看起來不舒服的話,就去改輸出commit的程序,不要改數據本身的意思"

rebase,合并的結果好看,一條線,但合并過程中出現沖突的話,比較麻煩

  • rebase過程中,一個commit出現沖突,下一個commit也極有可能出現沖突,一次rebase可能要解決多次沖突;

  • 合并的歷史脈絡(沖突)被物理消滅了

  • merge,合并結果不好看,一堆線交錯,但合并有沖突的話,只要解一次就行了;

有人說:"團隊里有新人且水平參差不齊的情況下,建議統一 git merge,不然容易出來麻花,過去解完麻花再傳授一番 git rebase 的原理然后 git push -f 一發又有什么收益呢"。

這里再次感謝WasteOfTime的回答:"為了追求Git的線好看,在團隊合作中使用rebase說輕點是舍本逐末,說重了是對團隊不負責任。個人以及本地項目無所謂。"

但是從中國特色的敏捷開發情況(瘋狂改方案,迭代),

”如果只在本地修改一兩個commit,然后馬上提交到master,跑完所有unit test,integration test,regression test等,直接發布,也就是continuous integration的理想狀態,那么rebase是極好的,保證了master的線性和萬一出事了可以準確的revert“——Eason的回答——其實意思就是:

如果經常需要rollback回滾就用rebase

個人覺得的最佳方案是:

盡量及時rebase上游分支,發現有沖突,merge

最后給堅持全部rebase的同行,送大家一篇助長記憶經文(rebase丟失的數據)

健忘癥有救了  專門增強記憶力的咒語

虛空藏菩薩咒(資料圖)

虛空藏菩薩咒為般若結晶,能增智光,能助大定,加強記憶力,促進心通。如能勤讀此咒,易得一心不亂、憶持不忘之力。

咒語原文:

南無虛空藏菩薩摩訶薩(三稱)

阿袮,邏阇鞞。鈐浮娑阇鞞。

耶婆奈阇鞞。博廁,娑迷。

波咤邏阇鞞。他奈婆邏鞞。

薩多邏伽邏泥。休磨休磨。

摩訶,伽樓尼迦。娑婆訶。

虛空藏咒注音:

ā nǐ,luó shé pí。qián fú suō shé pí。

yē pó nài shé pí。bó cè,suō mí。

bō zhà luó shé pí。tuō nài pó luó pí。

sà duō luó qié luó ní。xiū mó xiū mó。

mó hē,qié lóu ní jiā。suō pó hē。

發音注解:

阿(ā啊)袮(nǐ你):禰:讀作(nǐ你)屬于古音,而今音為(mí迷)。

阇:讀作(shé蛇),有的方音讀“薩”。

鞞:發音(pí皮),還有其它三種讀法:(pí皮)、(bǐ比)、(bǐng丙)。這里念(pí皮)比較合適。因鞞通毗,“鞞殺社”,也譯成“毗煞社”;“阿鞞跋致”,也譯成“阿毗跋致”;“鞞嚧社那”,也譯成“毗盧舍那”。(見《佛學大辭典》。)

耶:讀(yē噎)。另讀(yě也)

廁:讀作(cè測),有的方音讀“次”。

咤:讀音(zhà乍),不讀今音(zhā)。

伽:讀(qié茄),有的地方讀“斜”。

磨:讀作(mó模),有的方音讀成“我”。

訶:讀音為(hē呵),有的方音讀“呼”。

迦:讀(jiā加)。


轉載本站文章《git中merge還是rebase?git之圣戰merge vs rebase》,
請注明出處:http://www.qsexmk.tw/html/tools/VCS/git/5838.html