解決 Visual Studio 中的合併衝突

適用于:是Visual Studio否Visual Studio for Mac否Visual Studio Code

當您將某個分支合併到另一個分支時,某個分支中的認可檔案變更可能會與另一個分支中的變更衝突。 Git 會嘗試使用存放庫中的歷程記錄來解決這些變更,以判斷合併的檔案看起來應該是什麼。 當它不清楚如何合併變更時,Git 會停止合併,並告訴您哪些檔案衝突。

瞭解合併衝突

下圖顯示 Git 中變更衝突的基本範例。 在此範例中,main 分支和 Bugfix 分支會更新相同的源程式碼。

顯示合併衝突的圖表。

如果您嘗試將 Bugfix 分支合併至 main,Git 就無法判斷要用於合併版本的變更。 您可能會想要將變更保留在主要分支、Bugfix 分支或兩者的某些組合中。 使用主要分支中的合併認可來解決此衝突,以協調兩個分支之間的衝突變更。

顯示合併認可如何解決合併衝突的圖表。

當您將更新從遠端分支提取至本機分支 (時,會發生最常見的合併衝突案例,例如,從 origin/bugfix 提取至本機 Bugfix 分支) 。 您可以以相同方式解決這些衝突:在本機分支上建立認可以協調變更,然後完成合併。

防止合併衝突

只要檔案內容不會在認可之間大幅變更,Git 就很適合在大部分情況下自動合併檔案變更。 如果您的分支遠在主要分支後方,請考慮在開啟提取要求之前重新處理分支。 重設基底的分支將會合並到您的主要分支中,而不會發生衝突。

解決合併衝突

  • 如果您要與相同分支中的其他人共同作業,當您推送變更時,可能會看到合併衝突。

    推送後合併衝突的螢幕擷取畫面。

  • Visual Studio 會偵測您正在使用的本機分支是否在其遠端追蹤分支後方,然後提供您選擇的選項。

    本機分支位於遠端分支後方時可用的選項螢幕擷取畫面。

    注意

    如果您的遠端存放庫支援強制推送,您可以使用Git>設定加以啟用。

    在此範例中,選取 [ 提取],然後 選取 [推送] 以包含遠端存放庫引進的變更。 如果您在提取變更或嘗試合併兩個分支時發生任何合併衝突,Visual Studio 會在 [Git 變更 ] 視窗中、[ Git 存放庫 ] 視窗中,以及任何發生衝突的檔案上得知。

    合併衝突通知的螢幕擷取畫面。

  • [ Git 變更] 視窗會顯示 [ 未合併變更] 底下的檔案清單。 若要開始解決衝突,請按兩下檔案。 或者,如果您有在編輯器中開啟衝突的檔案,您可以選取 [ 開啟合併編輯器]。

    Git 變更視窗中合併衝突狀態的螢幕擷取畫面。

  • 在 [合併編輯器] 中,使用下列任一方法來開始解決衝突 (,如編號的螢幕擷取畫面中所述) :

    1. 逐行流覽您的衝突,然後選取核取方塊來選擇保留右側或左側。
    2. 保留或忽略所有衝突的變更。
    3. 在 [ 結果 ] 視窗中手動編輯程式碼。

    顯示如何在 Visual Studio 2022 中解決合併衝突的螢幕擷取畫面。

    提示

    如果您不喜歡 [合併編輯器] 中的預設版面配置,您可以使用齒輪下拉式功能表來變更它。

    [合併編輯器] 版面配置選項的螢幕擷取畫面。

    例如,下列螢幕擷取畫面顯示垂直檢視的外觀:

    [合併編輯器] 使用者介面中垂直檢視的螢幕擷取畫面。

  • 當您完成解決合併衝突時,請選取 [ 接受合併]。 針對所有衝突的檔案重複此程式。

    Visual Studio 2022 中 [接受合併] 動作的螢幕擷取畫面。

  • 使用 [Git 變更] 視窗來建立合併認可並解決衝突。

    如何使用 [Git 變更] 視窗建立合併認可的螢幕擷取畫面。

    注意

    如果您需要保留檔案的所有變更,您可以在 [ 未合併的變更 ] 區段中按一下滑鼠右鍵,然後選取 [ 保留目前 (本機) 而不需開啟合併編輯器。

    [保留目前] 功能表選項的螢幕擷取畫面。

提示

若要深入瞭解可用的協助工具選項,請參閱Visual Studio 協助工具秘訣和訣竅頁面的Git 鍵盤快速鍵一節。

下一步

若要繼續您的旅程,並深入瞭解如何解決衝突,請參閱 合併命令的 Git 網頁

另請參閱