<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          git|面試字節(jié)時(shí),老師問(wèn):合并分支中rebase和merge的區(qū)別

          共 1405字,需瀏覽 3分鐘

           ·

          2022-07-28 01:20


          點(diǎn)擊上方 前端陽(yáng)光,關(guān)注公眾號(hào)

          回復(fù)加群,加入技術(shù)交流群交流群



          實(shí)際開(kāi)發(fā)工作的時(shí)候,我們都是在自己的分支開(kāi)發(fā),然后將自己的分合并到主分支,那合并分支用2種操作,這2種操作有什么區(qū)別呢?

          git上新建一個(gè)項(xiàng)目,默認(rèn)是有master分支的,將項(xiàng)目克隆到本地,我們的準(zhǔn)備工作就完成了

          同學(xué)A:

          執(zhí)行g(shù)it log ,可以看到有一個(gè)提交記錄,是初始化提交

          新增一個(gè)文件a.txt, 再次查看我們的提交記錄,有2條提交記錄了

          這個(gè)時(shí)候?qū)⒈镜匦耤ommit的記錄push到遠(yuǎn)程倉(cāng)庫(kù),就可以看到我們的2次提交了

          同學(xué)B:

          同學(xué)B在已經(jīng)有提交記錄的master分支上,檢出分支dev,并將分支推送到遠(yuǎn)程分支,并進(jìn)行自己的開(kāi)發(fā)

          查看遠(yuǎn)程倉(cāng)庫(kù),多了一個(gè)dev分支

          此時(shí)的git分支類(lèi)圖是這樣的

          此時(shí)B同學(xué)開(kāi)始進(jìn)行開(kāi)發(fā),完成了自己的3次提交工作,使用git log 看一下

          此時(shí)git的分支類(lèi)圖是這樣子的

          重點(diǎn)

          現(xiàn)在有這樣一個(gè)現(xiàn)實(shí)的請(qǐng)況,就是B同學(xué)準(zhǔn)備進(jìn)行第4次提交的時(shí)候,同學(xué)A在master主分支上進(jìn)行了一次提交,master的提交已經(jīng)向前走了

          此時(shí)的git分支類(lèi)圖是這樣的

          此時(shí)我們知道B同學(xué)開(kāi)發(fā)的dev分支是基于C2提交點(diǎn)切出來(lái)的,而這個(gè)時(shí)候master分支已經(jīng)被更新了

          如果B同學(xué)開(kāi)發(fā)完畢,需要將其所作的功能合并到master分支 ,他可以有兩種選擇:

          直接git merge,那么這個(gè)時(shí)候會(huì)這么做

          • (1)找到master和dev的共同祖先,即C2
          • (2)將dev的最新提交C5和master的最新提交即C6合并成一個(gè)新的提交C7,有沖突的話,解決沖突
          • (3)將C2之后的dev和master所有提交點(diǎn),按照提交時(shí)間合并到master

          直接git rebase

          切換分支到需要rebase的分支,這里是dev分支

          執(zhí)行g(shù)it rebase master,有沖突就解決沖突,解決后直接git add . 再git rebase --continue即可

          發(fā)現(xiàn)采用rebase的方式進(jìn)行分支合并,整個(gè)master分支并沒(méi)有多出一個(gè)新的commit,原來(lái)dev分支上的那幾次(C3,C4,C5)commit記錄在rebase之后其hash值發(fā)生了變化,不在是當(dāng)初在dev分支上提交的時(shí)候的hash值了,但是提交的內(nèi)容被全部復(fù)制保留了,并且整個(gè)master分支的commit記錄呈線性記錄

          此時(shí)git的分支類(lèi)圖

          總結(jié)

          git merge 會(huì)讓2個(gè)分支的提交按照提交時(shí)間進(jìn)行排序,并且會(huì)把最新的2個(gè)commit合并成一個(gè)commit。最后的分支樹(shù)呈現(xiàn)非線性的結(jié)構(gòu)

          git reabse 將dev的當(dāng)前提交復(fù)制到master的最新提交之后,會(huì)形成一個(gè)線性的分支樹(shù)

          作者:小孔不菜 鏈接:https://juejin.cn/post/7123826435357147166


          往期推薦


          優(yōu)秀文章匯總:https://github.com/Sunny-lucking/blog

          內(nèi)推:https://www.yuque.com/peigehang/kb

          技術(shù)交流群


          我組建了技術(shù)交流群,里面有很多 大佬,歡迎進(jìn)來(lái)交流、學(xué)習(xí)、共建。回復(fù) 加群 即可。后臺(tái)回復(fù)「電子書(shū)」即可免費(fèi)獲取 27本 精選的前端電子書(shū)!回復(fù)內(nèi)推,可內(nèi)推各廠內(nèi)推碼



             “分享、點(diǎn)贊在看” 支持一波??


          瀏覽 66
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一级婬乱片 | 国产精品乱码一区二三区小蝌蚪 | 久久综合加勒比 | 亚洲国产情侣小视频 | 看黄色一级片 |