<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 merge 嗎?不妨試試 git rebase

          共 1474字,需瀏覽 3分鐘

           ·

          2022-01-17 03:09

          點擊下方“IT牧場”,選擇“設為星標”

          git merge 和 git rebase 目的都是將一個分支的 commit 合并到到另外一個分支中去,但兩者有一定區(qū)別。

          git merge

          在gitlab上新建一個項目,push一個test文件上去
          在本地修改test文件做兩次commit,每次commit都在文件中加一句修改



          在遠程倉庫中直接修改文件并 commit,模擬其他開發(fā)者的 commit。

          如果此時我push本地的提交到遠程,就會被拒絕,因為遠程和本地已經各自有commit了,我們常規(guī)的做法是git pull一下,在本地解決沖突,然后繼續(xù)push,本質上git pull = git fetch + git merge

          產生沖突:


          處理沖突:

          重新走add commit 然后push,可以看到必須將合并當作一個新的commit:

          git rebase

          如果我們此時采用git pull --rebase,也就是=git fetch + git rebase

          一樣本地commit2次,遠程commit2次


          使用可以看到git pull --rebase,還是會提示我們去處理沖突,但是從git log 上可以看出明顯已經發(fā)生了rebase,也就是變基,本地分支基于了遠程的最新commit,而不是上次的本地commit。

          git rebase

          處理沖突,每處理完一次本地commit沖突,用git add標記沖突已處理完,用git rebase --continue繼續(xù)處理下一個本地commit,也可以先用git rebase -i將本地的commit合并為一個commit,這樣git pull --rebase就能一次處理所有的沖突。

          push到遠程之后,在分支圖可以明顯看到,跟merge的區(qū)別在于,rebase不會產生分支,并且也不會產生新的提交。

          總結

          • merge 是一個合并操作,會將兩個分支的修改合并在一起,默認操作的情況下會提交合并中修改的內容。
          • merge 的提交歷史記錄了實際發(fā)生過什么,關注點在真實的提交歷史上面。
          • rebase 并沒有進行合并操作,只是提取了當前分支的修改,將其復制在了目標分支的最新提交后面。
          • rebase 操作會丟棄當前分支已提交的 commit,故不要在已經 push 到遠程,和其他人正在協作開發(fā)的分支上執(zhí)行 rebase 操作。
          • merge 與 rebase 都是很好的分支合并命令,沒有好壞之分,使用哪一個應由團隊的實際開發(fā)需求及場景決定。
          • 如果比較關注commit時間的話,還是用git merge,rebase會打亂時間線是不可避免的。
          來源 |?https://juejin.cn/post/7001409038307033119

          干貨分享

          最近將個人學習筆記整理成冊,使用PDF分享。關注我,回復如下代碼,即可獲得百度盤地址,無套路領??!

          ?001:《Java并發(fā)與高并發(fā)解決方案》學習筆記;?002:《深入JVM內核——原理、診斷與優(yōu)化》學習筆記;?003:《Java面試寶典》?004:《Docker開源書》?005:《Kubernetes開源書》?006:《DDD速成(領域驅動設計速成)》?007:全部?008:加技術群討論

          加個關注不迷路

          喜歡就點個"在看"唄^_^

          瀏覽 52
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  亚洲无码在线高清 | 欧美三级在线播放视频 | 午夜影院无码免费 | 国产一级视频在线观看 | 日撸夜撸在线看 |