首页 > tools > VCS > git > > 正文

git中merge还是rebase?git之圣战merge vs rebase

发布人:zhoulujun@live.cn    点击:

你觉得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ā加)。