日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

13.Git分支-变基(rebase)、rebase VS merge

發(fā)布時(shí)間:2024/4/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 13.Git分支-变基(rebase)、rebase VS merge 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.變基的基本操作

  在Git中整合來(lái)自不同分支的修改主要有兩種方法:merge和rebase。

看下面的例子:?開(kāi)發(fā)任務(wù)分叉到了兩個(gè)不同的分支,并且都有了新的提交。

這時(shí)候我們可以使用?git merge?命令將experiment分支合并進(jìn)入master分支,Git會(huì)將C3、C4以及兩者最近的共同祖先做一個(gè)三方合并,并且生成一個(gè)新的提交。如下圖所示:

  其實(shí)我們還可以使用rebase命令:rebase命令將提交到某一分支上的提交都移至另一個(gè)分支上

$ git checkout experiment $ git rebase master First, rewinding head to replay your work on top of it... Applying: added staged command

  如下圖所示:??使用rebase之后,將experiment分支上的提交移動(dòng)到了master分支的后面。

  原理:首先找到兩個(gè)分支(當(dāng)前所在分支experiment和目標(biāo)基底分支master)的最近共同祖先(即C2),然后對(duì)比當(dāng)期分支相對(duì)于最近共同祖先的所有提交,提取相應(yīng)的修改存為臨時(shí)文件,然后將當(dāng)前分支指向目標(biāo)基底(即C3),最后將此前存好的臨時(shí)文件依次應(yīng)用(理解為將從當(dāng)前分支上,從最近共同祖先開(kāi)始的后一個(gè)提交節(jié)點(diǎn),開(kāi)始復(fù)制,放到目標(biāo)基底后)。

  完成rebase操作之后,可以運(yùn)行以下命令,進(jìn)行一次快速移動(dòng)。

$ git checkout master $ git merge experiment

  操作完成之后,提交歷史如下圖所示。

  與直接使用merge命令相比,rebase命令可以使提交歷史更加的整潔,看上去就像是一條直線(xiàn)。使用rebase的目的是是提交歷史看起來(lái)更加的整潔,其實(shí),無(wú)論是通過(guò)merge還是rebase,整合的最終結(jié)果都是一樣的,只不過(guò)rebase的提交歷史看起來(lái)更加的整潔。rebase是將一系列提交按照原有次序依次應(yīng)用到另一分支上,而merge是將最終結(jié)果merge在一起。

2.rebase VS merge?

  對(duì)于rebase和merge哪種好,有兩種觀(guān)點(diǎn):

  1.有一種觀(guān)點(diǎn)認(rèn)為,倉(cāng)庫(kù)的提交歷史即是記錄著實(shí)際上發(fā)生過(guò)什么,它是一種歷史文檔,本身具有價(jià)值,不能隨意修改,這些歷史應(yīng)該被保留下來(lái),供后人進(jìn)行查閱。這種觀(guān)點(diǎn)支持使用merge而不是rebase。

  2.另一種觀(guān)點(diǎn)正好相反,他們認(rèn)為提交歷史是項(xiàng)目開(kāi)發(fā)過(guò)程中發(fā)生的事情,沒(méi)有人會(huì)出版一本書(shū)的第一版草稿,都是需要進(jìn)行多次修訂之后才能進(jìn)行出版的,修訂之前的這些歷史不應(yīng)該被讀者看到。這種觀(guān)點(diǎn)鼓勵(lì)使用rebase。

  總的原則:只對(duì)尚未推送或分享給他人的本地修改執(zhí)行rebase操作清理歷史,從不對(duì)已經(jīng)提交到別處的提交進(jìn)行rebase操作。

?

轉(zhuǎn)載于:https://www.cnblogs.com/wangwenhui/p/10673294.html

總結(jié)

以上是生活随笔為你收集整理的13.Git分支-变基(rebase)、rebase VS merge的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。