分享方式:


解決 Team Foundation 版本控制衝突

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 |Visual Studio 2022

使用 Team Foundation 版本控制 (TFVC) 來管理檔案的優點是,有幾個人可以在檔案上同時工作。 其中一個缺點是,有時候您必須解決衝突,才能取得、簽入、取消存留、合併或回復您的檔案。

雖然遇到衝突可能會令人沮喪,但系統會提供資訊和工具來協助您了解和解決衝突。

您也可以使用 [解決] 命令,從命令行解決衝突。

提示

如果您的小組需要共同作業來解決大量的衝突,例如在大型程式代碼基底中的合併作業之後,共用開發計算機上的公用工作區可能會有説明。 如需詳細資訊,請參閱 建立和使用工作區

解決衝突

您可以使用 Visual Studio [解決衝突 ] 視窗來解決封鎖您的衝突。 若要開啟視窗,請選取 [動作>解決 Team Explorer 的擱置變更] 頁面中的 [衝突]。

使用 [解決衝突] 視窗解決衝突的螢幕快照。

根據預設,視窗只會顯示您嘗試的最近作業所造成的衝突。 當視窗處於此狀態時,會出現開始的訊息: 套用路徑篩選。 若要顯示工作區中的所有衝突,請選擇 [ 取得所有衝突]。 開頭為: <N> Conflict(s) 的 訊息隨即出現。

如果您在工作區中對檔案進行變更,因此已經過很多時間,可能會發生新的衝突。 若要重新整理 [ 解決衝突] 視窗,請選擇 [ 重新整理]。

顯示 [解決衝突] 視窗的螢幕快照。

每個衝突都包含資訊,有時也包含可協助您解決問題的連結。 若要取得詳細資訊,您可以選取衝突並選擇下列其中一個選項:

  • 歷程記錄圖示。查看檔案歷程記錄的歷程記錄。 如果造成衝突的作業是合併或復原,您可以選擇 [歷程記錄] 右邊的功能表控件,然後選取 [來源記錄] 或 [目標記錄]。 如需詳細資訊,請參閱 取得專案的歷程記錄。

  • 比較圖示。比較,或選取圖示旁的下拉式箭號,然後選擇命令。 [差異] 視窗隨即開啟。

  • 標註圖示。注以檢視對檔案最新版本所做的所有變更詳細數據,包括每次變更的人員,以及何時進行變更。 請參閱 使用批注檢視檔案變更。

自動解決所有衝突

根據預設,除非您關閉此選項,否則系統會自動嘗試 自動復原所有 衝突。 若要關閉自動自動復原全部,請選擇 [工具>選項]。 在 [選項] 對話框的 [原始檔控制>Visual Studio Team Foundation Server] 底下,取消選取 [嘗試在產生衝突時自動解決衝突]。

您也可以在 [解決衝突] 視窗中手動選擇 [自動復原全部],然後選取下列其中一個選項:

  • 如果您想要系統使用所有啟發學習法自動解決衝突,則所有衝突類型

  • 如果您想要讓系統嘗試解決衝突,但您想要排除一些啟發學習法,則特定衝突類型

    [ 選擇要解決 的衝突] 對話框隨即出現。 檢查或清除您想要啟用或停用的選項,然後選擇 [ 自動復原]。

    系統會嘗試自動解決 [ 擱置變更 ] 視窗中顯示的衝突。 系統無法解決的任何衝突都會保留在視窗中。 您必須 手動解決 這些衝突。

了解自動選項

您可以限制 AutoResolve All 選項自動解決的衝突類型。 當您選擇 [ 自動回復全部 ],然後選取 [ 特定衝突類型] 時,會出現 [ 選擇衝突解決 ] 對話方塊。

顯示 [選擇衝突解決] 對話框的螢幕快照。

衝突原因

範例

選取專案


檔案的每個版本都進行了非衝突的內容變更。

在左側的檔案版本中, 開頭已新增零 。 在右側的 檔案中,結尾新增了三

非衝突內容變更的螢幕快照。

與任何內容變更衝突

內容變更是在工作區唯一的取得或簽入作業期間,或在目標版本唯一的合併或復原作業期間進行。

專案 45 已新增至工作區或目標版本:

工作區或目標唯一內容變更的螢幕快照。

與只在本機工作區或目標分支中所做的內容變更衝突

取得或簽入作業期間的內容變更是伺服器唯一的,或在來源版本唯一的合併或復原作業期間進行。

已將四個和個專案新增至伺服器或來源版本:

伺服器或來源唯一內容變更的螢幕快照。

與只在伺服器版本或來源分支中所做的內容變更衝突

在取得或簽入作業期間或在合併或復原作業期間在來源分支中重新命名檔案。

您已取出名為 launch.cs 的檔案,並加以處理。 在此期間,其他人簽入會影響相同檔案的變更集。 該變更集未修改檔案的內容,但會將檔案的名稱變更為 start.cs

在伺服器版本或來源分支中重新命名檔案所造成的衝突

已進行常見的內容變更,導致每個版本的內容都相同。 或者,您已變更檔案、透過閘道簽入組建簽入檔案,然後選取 [ 在本機 保留擱置中的變更] 選項。

每個版本的變更都會導致相同的檔案內容。 這些變更可以是檔案中的內容,如下列範例所示:

顯示這兩個版本中相同內容變更的螢幕快照。

伺服器和工作區中相同變更所造成的衝突

這個選項也會解決所有其他作業所造成的衝突,例如,重新命名、刪除、取消刪除和分支,導致相同的檔案。

提示

如果您選取此複選框,當您繼續進行時,系統會藉由將伺服器版本下載到您的工作區來解決這些變更。

自動合併選取的衝突

若要嘗試使用上述所有自動合併選項來解決選取的衝突,請選取一或多個衝突,然後選擇 [ 自動合併]。

提示

您可以按住 Ctrl 鍵或 Shift 鍵來選取多個衝突。

注意

如果 AutoMerge 已停用,您必須 手動解決衝突

手動解決選取的衝突

如果系統無法自動解決衝突,或您想要確定您了解變更的內容,則必須手動解決衝突。 在每個衝突中,系統會顯示您可以採取的動作來解決衝突。 顯示的動作取決於衝突類型和造成衝突的作業。

使用 [合併] 視窗

當衝突的內容變更造成衝突時,您可以選擇 [合併工具中的合併變更]。 [合併] 視窗隨即出現。

顯示合併工具中合併變更的螢幕快照。

在 [ 合併 ] 視窗中,您可以:

  • 選取視窗的版面配置: [垂直檢視]、 [水平檢視] 或 [ 混合檢視]。
  • 在差異和衝突之間巡覽。
  • 從檔案的左側和右側版本選取專案,以將它們包含在結果中。
  • [結果 ] 窗格中輸入更多內容至檔案。
  • 檢視檔案的歷程記錄。 如需詳細資訊,請參閱 取得專案的歷程記錄。
  • 比較檔案的版本。
  • 標註檔案,以查看誰變更了哪些內容。 如需詳細資訊,請參閱 使用批注檢視檔案變更。

當您滿意 [結果] 窗格的內容時,請選擇 [接受合併]。

解決衝突的結果會出現在 [結果 ] 窗格中。