欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網
          最全最豐富的資訊網站

          git rebase是什么意思

          git rebase的意思為:重新定義分支的版本庫狀態(tài);當執(zhí)行rebase操作時,git會從兩個分支的共同祖先開始提取待變基分支上的修改,然后將待變基分支指向基分支的最新提交,最后將剛才提取的修改應用到基分支的最新提交的后面。

          git rebase是什么意思

          本教程操作環(huán)境:Windows7系統、Git2.30.0版、Dell G3電腦。

          git rebase,顧名思義,就是重新定義(re)起點(base)的作用,即重新定義分支的版本庫狀態(tài)。

          一、提交節(jié)點圖解

          首先通過簡單的提交節(jié)點圖解感受一下rebase在干什么

          兩個分支master和feature,其中feature是在提交點B處從master上拉出的分支

          master上有一個新提交M,feature上有兩個新提交C和D

          git rebase是什么意思
          此時切換到feature分支上,執(zhí)行如下命令,相當于是想要把master分支合并到feature分支

          git checkout feature git rebase master  //這兩條命令等價于git rebase master feature

          下圖為變基后的提交節(jié)點圖,解釋一下其工作原理:

          git rebase是什么意思

          • feature:待變基分支、當前分支
          • master:基分支、目標分支

          官方解釋:當執(zhí)行rebase操作時,git會從兩個分支的共同祖先開始提取待變基分支上的修改,然后將待變基分支指向基分支的最新提交,最后將剛才提取的修改應用到基分支的最新提交的后面。

          結合例子解釋:當在feature分支上執(zhí)行git rebase master時,git會從master和featuer的共同祖先B開始提取feature分支上的修改,也就是C和D兩個提交,先提取到。然后將feature分支指向master分支的最新提交上,也就是M。最后把提取的C和D接到M后面,但這個過程是刪除原來的C和D,生成新的C’和D’,他們的提交內容一樣,但commit id不同。feature自然最后也是指向D’。

          通俗解釋(重要?。?/strong>:rebase,變基,可以直接理解為改變基底。feature分支是基于master分支的B拉出來的分支,feature的基底是B。而master在B之后有新的提交,就相當于此時要用master上新的提交來作為feature分支的新基底。實際操作為把B之后feature的提交存下來,然后刪掉原來這些提交,再找到master的最新提交位置,把存下來的提交再接上去(新節(jié)點新commit id),如此feature分支的基底就相當于變成了M而不是原來的B了。

          其中還有一句解釋也很直白,rebase 命令其實關鍵在于理解「基」,git rebase <基分支>,就是將基分支與當前分支的差異提交(分岔點之后)獲取到,然后在「基分支」最新提交點后面將差異提交逐個再次提交,最后將當前分支的 HEAD 指針指向最新的提交點


          二、實際git提交示例

          按照上面的圖解構造了提交記錄,如下圖所示:(ABM是master分支線,ABCD是feature分支線。這里畫成了master變色分叉出來,這不影響理解,知道是表示兩個分支兩條線即可?。?/p>

          git rebase是什么意思
          此時,在feature分支上執(zhí)行git rebase master

          變基完成以后,ABCD是原來的feature分支線,ABMC’D’是新的feature分支線,ABM是master分支線(沒有變化)

          git rebase是什么意思


          三、推薦使用場景

          搞來搞去那么多,這其實是最重要的。不同公司,不同情況有不同使用場景,不過大部分情況推薦如下:

          • 拉公共分支最新代碼的時候使用rebase,也就是git pull -r或git pull –rebase,但有個缺點就是rebase以后我就不知道我的當前分支最早是從哪個分支拉出來的了,因為基底變了嘛。(如果使用merge,多出無意義的一條提交記錄“Merge … to …”)

          • 往公共分支上合代碼的時候,使用merge。(如果使用rebase,那么其他開發(fā)人員想看主分支的歷史,就不是原來的歷史了,歷史已經被你篡改了)

          推薦學習:《Git教程》

          贊(0)
          分享到: 更多 (0)
          網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號