解決 Team Foundation 版本控制衝突

使用 Team Foundation 版本控制 管理檔案的優點是,許多人可以同時處理一個檔案。 但有一個缺點是有時您必須先解決衝突,然後才能取得、簽入、解除擱置、合併或復原檔案。

雖然可能發生衝突造成妨礙,系統會提供資訊和工具協助您了解並解決衝突。

  • 解決衝突

  • 自動解析所有衝突

  • 自動合併個別衝突

  • 手動解決個別衝突

  • 了解自動選項

  • 從命令提示字元工作

  • 取得秘訣

解決衝突

使用 [解決衝突] 視窗,來解決封鎖您的衝突。

衝突的變更會封鎖簽入作業

[解決衝突] 視窗

根據預設,這個視窗只會顯示您最近一次嘗試執行的作業所造成的衝突。 當視窗處於這種狀態時,會出現以下列文字開頭的訊息:[已套用路徑篩選]。 若要顯示工作區中的所有衝突,請選擇 [取得所有衝突]。 開頭為 [n 個衝突] 的訊息隨即出現。

如果自您在工作區中變更檔案之後已經過一段很長的時間,則可能已經發生新的衝突。 若要重新整理 [解決衝突] 視窗,請選擇 [重新整理]。

每個衝突包含有助於解決的資訊 (有時為連結)。 若要取得更多資訊,您可以選取衝突並選擇:

  • [記錄] 按鈕 [記錄],用以查看檔案的記錄。 如果造成衝突的作業是合併或復原作業,您可以選擇 [記錄] 右邊的功能表控制項,然後選取 [來源記錄] 或 [目標記錄]。

    請參閱 取得項目的歷程記錄

  • [註釋] 按鈕 [附註],檢視檔案最新版本之所有變更的詳細資料,包括進行每項變更的人員,以及進行變更的時間。 請參閱 使用附註檢視檔案變更

  • [比較檔案] 按鈕 [比較] (或按鈕右邊的功能表並選擇命令)。 [差異比對] 視窗隨即出現。

自動解析所有衝突

根據預設,系統會自動嘗試 [全部自動解析] 衝突,除非您關閉了這個選項 (請參閱提示)。 在 [解決衝突] 視窗中,您也可以手動選擇 [全部自動解析],然後選取:

  • 如果您要讓系統使用所有啟發方式,嘗試自動解決衝突,請選取 [所有衝突類型]。

  • 如果您要讓系統嘗試解決衝突,但想排除某些啟發方式,請選取 [特定衝突類型]。

    [選擇要解決的衝突] 對話方塊隨即出現。 選取或清除您要啟用或停用的選項,然後選擇 [自動解析]。 如需詳細資訊,請參閱下面的了解自動選項。

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

自動合併單一衝突

如果您要嘗試使用在了解自動選項底下描述的任何自動合併選項來解決所選取的衝突,請選擇 [自動合併]。

提示

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

注意事項注意事項

如果 [自動合併] 已停用,則表示您必須手動解決這項衝突。

手動解決單一衝突

如果系統無法自動解決衝突,或者您想要確定自己了解變更,則必須手動解決衝突。 在每個衝突內,系統會顯示可以用來解決衝突的動作。 顯示的動作需視衝突的類型以及造成衝突的作業而定。

在合併工具中合併變更

當衝突是由衝突的內容變更時所造成,您可以選擇 [在合併工具中合併變更]。

當您選擇此動作時,[合併] 視窗隨即出現。

合併視窗

解決衝突的工作結果會顯示在 [結果] 窗格中。

在這個視窗中,您可以:

  • 選取視窗配置:[垂直檢視]、[水平檢視]、[混合檢視]。

  • 在差異與衝突之間導覽。

  • 從檔案的左、右版本選取項目,以將它們包含在結果中。

  • 在 [結果] 窗格的檔案中輸入其他內容。

  • 檢視檔案的記錄。 請參閱 取得項目的歷程記錄

  • 比較檔案的各種版本。

  • 附註檔案以查看哪些人變更了什麼。 請參閱 使用附註檢視檔案變更

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

了解自動選項

在特殊案例中,您可能需要限制 [全部自動解析] 選項自動解析的衝突類型。

當您選擇 [全部自動解析] 和 [特定衝突類型] 時,[選擇要解決的衝突] 對話方塊隨即出現。

[選擇要解決的衝突] 對話方塊

如果您要讓系統自動解決衝突,而發生衝突的原因是…

如本範例所說明…

那麼請選取這個核取方塊…

檔案的每個版本中都做了不具衝突性的內容變更

左邊檔案版本的開頭處加入了 0, 而右邊檔案的結尾處則加入了 3

非衝突的內容變更

與任何內容變更衝突

已進行工作區 (在取得或簽入作業期間) 或目標版本 (在合併或復原作業期間) 獨有的內容變更

45 已加入至工作區或目標版本:

工作區或目標所獨有的內容變更

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

已進行伺服器 (在取得或簽入作業期間) 或來源版本 (在合併或復原作業期間) 獨有的內容變更

45 已加入至伺服器或來源版本:

伺服器或來源所獨有的內容變更

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

已重新命名伺服器 (在取得或簽入作業期間) 或來源分支 (在合併或復原作業期間) 上的檔案

已簽出名為 launch.cs 的檔案,並且已使用這個檔案。 當時有其他人簽入影響同一個檔案的變更集。 這個變更集並沒有修改檔案的內容,但卻將檔案的名稱變更為 start.cs。

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

  • 已在每個版本中做了產生相同內容的一般內容變更

  • 您可以變更檔案並透過閘道簽入組建將檔案簽入,然後選取 [在本機保留我的暫止變更] 選項

每個版本的變更都產生了相同的檔案內容。 變更可以是針對檔案中的內容,如下列範例所示:

每一個版本中的相同內容變更

這個選項也能解決由所有其他作業 (例如:重新命名、刪除、取消刪除及分支) 以及造成相同檔案的衝突。

提示

如果您選取這個核取方塊,在繼續進行作業時,系統會藉由將伺服器版本放入 (下載到) 您的工作區中以解決這些變更。

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

從命令提示字元工作

祕訣

  • 提示系統預設會自動嘗試 [全部自動解析] 衝突。 若要變更選項,請從功能表列選擇 [工具]、[選項],然後在 [選項] 對話方塊中,巡覽至 [原始檔控制]、[Visual Studio Team Foundation Server]。 清除 [嘗試在衝突產生時自動解決衝突] 核取方塊。

  • 提示您的小組是否需要共同作業以解決大量衝突 (例如,可能在大型程式碼基底合併作業之後發生)? 如果是,則共用開發電腦上的公用工作區會有所幫助。 請參閱 建立和使用工作區