• [转]本地分支衝突


    原文: https://w3c.hexschool.com/git/921e90ff

    ---------

    並非每次分支合併都會一帆風順,如果剛好合併內容同時修改同一行 CODE 時,就會導致衝突。

    這裡也來分享如何解決衝突,也附上本小節 Git 範例程式碼

    情境解說

    images

    1. dev 的 c4 分支,修改了 all.css,加入了 h1 樣式進去
    2. master 的 c5 分支,也同樣改了 all.cs,並加入了 h1 樣式

    更重要的是他們改的行數是一樣的,所以必然會產生衝突。

    接下來我們就 checkout 到 master 後,來合併到 dev

    git merge dev

    此時,終端機會回饋衝突訊息

    ❯ git merge dev    
    Auto-merging all.css
    CONFLICT (content): Merge conflict in all.css
    Automatic merge failed; fix conflicts and then commit the result.

    這裡的意思是,all.css 確實發生衝突了,此時該檔案會變成 Unmerged 狀態,所以目前合併過程尚未,Git 請我們將衝突檔案解決掉後,才能順利合併。

    所以這裡該怎麼做呢?我們先用 git status 觀看訊息。你會發現 all.css 目前變成 Unmerged paths 狀態。

    images

    所以接下來,我們就進入到 all.css 看看發生什麼事情了。

    body{
        color: red;
    }
    h1{
    <<<<<<< HEAD
        color: blue
    =======
        color: red
    >>>>>>> dev
    }

    來詳細解釋下:

    1. 從 <<<< 到 === 的內容,意思是你當前的 HEAD 位置,依此範例,就是 master 。
    2. 從 === 到 >>> 就是 dev 的內容。

    此時你要衡量要保留 master 還是 dev,假使你要保留讓文字變成藍色,那就讓他變成以下程式碼。

    body{
        color: red;
    }
    h1{
        color: blue
    }

    當儲存後,你就可以輸入 git add all.css 將它重新加入索引後,你可以使用 git status 觀察狀態。

    images

    此時的回饋就會說,您目前沒有任何衝突了,可以使用 git commit 來提交。於是我們就輸入該指令後。就會彈跳編輯器顯示預設訊息。

    Merge branch 'dev'
    
    # Conflicts:
    #    all.css
    #
    # It looks like you may be committing a merge.
    # If this is not correct, please remove the file
    #    .git/MERGE_HEAD
    # and try again.
    
    
    # Please enter the commit message for your changes. Lines starting
    # with '#' will be ignored, and an empty message aborts the commit.
    #
    # On branch master
    # All conflicts fixed but you are still merging.
    #
    # Changes to be committed:
    #    modified:   index.html
    #

    Git 預設訊息裡,你也可以自己編輯相關內容,若是覺得沒問題就儲存關閉,本次合併就完成了!

    也附上 Sourcetree 提供參考。

    images

    流程回顧

    1. checkout 到 master 後,輸入 git merge dev
    2. 發生衝突,all.css 變成 Unmerged 狀態
    3. 修改 all.css 後,重新加入到索引 git add all.css
    4. 透過 git status 指令觀察,是否可以重新提交
    5. 輸入 git commit 提交,並撰寫 commit 訊息,完成本次合併

    小結

    通常在衝突上,不會只有單一檔案或某一行程式碼。可能會出現一個檔案會有多處衝突地方,或者是兩個檔案有衝突,此時就依照上面步驟調整好後,再依序加入索引就沒問題了。

  • 相关阅读:
    mapper.xml接收多个参数
    java循环调用多个timer定时器
    java执行cmd命令的两种方法
    java解压.ZIP .TAR等常用格式文件
    HDU2157 (水题)状态转移
    Codeforces Round #628 (Div. 2)C. Ehab and Path-etic MEXs(构造+树)
    POJ3735——mat乘法优化
    HDU5667——费马小定理
    UCF Local Programming Contest 2012(Practice) D. The Clock Algorithm
    嵌套递推——矩阵快速幂
  • 原文地址:https://www.cnblogs.com/oxspirt/p/16256123.html
Copyright © 2020-2023  润新知