解析 Visual Studio 中的合併衝突

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

防止合併衝突

只要檔案內容不會在提交之間大幅變更,Git 就擅長在大部分情況下自動合併檔案變更。 如果您的分支遠遠落後於主分支,請考慮在開啟提取要求之前重新將分支變基。 重新變基的分支會合併到您的主分支中,而不會發生衝突。

解決合併衝突

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

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

  • Visual Studio 會偵測您所處理的本機分支是否位於其遠端追蹤分支後方,然後提供您選擇的選項。

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

    注意

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

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

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

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

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

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

    1. 逐行瀏覽您的衝突,然後選取核取方塊來選擇保留右側或左側。

      - 或 -

    2. 選取 [接受傳入] 按鈕 (或按 F10) 接受所有傳入變更,或按 [接受目前] 按鈕 (或按 F11) 保留目前版本的所有衝突變更。 您可以選取任一並排框頂端的其中一個核取方塊,以執行相同的動作。

      - 或 -

    3. [結果] 視窗中手動編輯您的程式碼。

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

    提示

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

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

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

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

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

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

  • 使用 [Git 變更] 視窗來建立合併提交並解析衝突。

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

    注意

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

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

提示

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

設定您的 diff 工具

如果您將.gitconfig檔案設定為使用 BeyondCompare 或 KDiff3 之類的第三方差異工具,Visual Studio 會尊重您的決定。 每當 Visual Studio 顯示 diff 時,系統就會在您選擇的工具中開啟個別的視窗。 例如,請參閱此 StackOverflow 問題。