Merge 命令

merge 命令將變更從一個分支套用到另一個分支。

注意事項注意事項

在您執行簽入作業後,這個命令的結果才會反映在 Team Foundation 版本控制伺服器中。 如需詳細資訊,請參閱 簽入暫止的變更

必要的使用權限

若要使用 merge 命令,您必須將包含 目的地之工作空間資料夾的 [簽出] 權限設為 [允許],並將包含來源之工作空間資料夾的 [讀取] 權限設為 [允許]。 如需詳細資訊,請參閱Team Foundation Server 使用權限

tf merge [/recursive] [/force] [/candidate] [/discard] 
[/version:versionspec] [/lock:none|checkin|checkout] [/preview] 
[/baseless] [/nosummary] [/noimplicitbaseless] [/conservative] [/format:(brief|detailed)] [/noprompt] [/login:username,[password]] source destination

參數

引數

描述

versionspec

提供 /version 選項的值 (例如 C2)。 如需 Team Foundation 如何剖析版本規格以便判斷哪些項目位於範圍內的詳細資訊,請參閱命令列語法 (版本控制)

source

指定要當做合併來源的檔案或資料夾。

destination

指定要當做合併目的的檔案或資料夾。

username

提供 /login 選項的值。 您可以將使用者名稱值指定成網域\ 使用者名稱或使用者名稱的格式。

選項

描述

/recursive

符合目前的目錄和任何子資料夾中的 source 項目規格。

/force

忽略合併記錄,並將指定的變更從來源合併到目的地,即使之前已合併過某些或全部的變更。

/candidate

列印來源中尚未合併到目的地的所有變更集的清單。 清單應該包含尚未合併的變更集 ID 以及其他有關該變更集的基本資訊。

/discard

不執行合併作業,但更新合併記錄以追蹤該合併已發生。 這樣會捨棄變更集,而不用於特殊合併。

/version

如果是執行選擇性的合併,這個選項會指定應該合併至目的之範圍。 如果是執行更新性的合併,這個參數會指定版本,在此版本之前所有未合併的變更都會合併。

如果是執行選擇性的合併,版本範圍表示要合併之變更集的開始點和結束點。 例如,如果嘗試合併版本 4~6,便會將變更集 4、5 和 6 合併。

/lock

指定鎖定類型或移除項目的鎖定。 如需詳細資訊,請參閱認識鎖定類型

鎖定選項:

  • None

    沒有在項目上放置任何鎖定,並且會移除該項目現有的任何鎖定。

  • Checkin

    其他使用者可以簽出指定的項目,但除非執行簽入來解除鎖定,否則他們無法將修訂簽入鎖定的檔案。 如果有任何其他的使用者鎖定了任一指定的項目,鎖定作業就會失敗。

  • Checkout

    防止使用者簽入或簽出任一指定項目,除非鎖定有明確釋出。 如果任何其他的使用者已鎖定任一指定項目,或者有針對任何項目所做的現有暫止變更,鎖定作業就會失敗。

/preview

顯示合併的預覽。

/baseless

在沒有基底版本的情況下執行合併。 換句話說,允許使用者合併不具有合併關聯性的檔案和資料夾。 在無基底合併之後,將存在合併關聯性,而且日後進行合併時不需要以無基底的方式進行。

注意事項注意事項
無基底合併無法刪除目標中的檔案。您可以手動執行這類變更。

/noimplicitbaseless

指定 Team Foundation 將不會在兩個項目於兩個不相關的版本控制樹狀結構中擁有相同的相關名稱時,執行隱含無基底合併。

/nosummary

省略衝突、錯誤和警告的摘要。

/noprompt

抑制任何要求您輸入的提示。

/conservative

當您將分支合併到另一個分支時導致更多的衝突。

/format

指定摘要合併衝突的格式:

  • Brief:預設值,這個值只會摘要衝突、警告和錯誤的總數。

  • Detailed:不僅摘要衝突、警告和錯誤的總數,也會列出每個衝突的詳細資料。

注意這個選項只有在輸出包含衝突的摘要時才適用。 如果使用的是 /nosummary 選項,或合併造成的衝突、警告和錯誤少於 10 個,則無法顯示摘要。

/login

指定使用者名稱和密碼,以便透過 Visual Studio Team Foundation Server 驗證使用者。

備註

您可以使用 tf 命令行公用程式的 merge 命令,將現有來源分支中的變更套用至現有的目標分支。 您可以將個別的修訂或完整的變更集合併到目標分支。 您可以將變更從來源合併到目的分支,或從目的合併到來源分支。

merge 命令還可讓您在來源分支中查詢尚未移轉到目標分支的變更。 此外,它還可讓您指出特定的變更絕不會從來源合併至目的,且不能再顯示為合併作業的候選項目。

如需如何尋找 tf 命令列公用程式的詳細資訊,請參閱 Tf 命令列公用程式命令

無基底合併

使用無基底合併可將不是彼此直接分支的項目加以合併。 若要執行無基底合併,您必須使用 tf merge 命令。 當您執行無基底合併時,Team Foundation 不會有任何與分支中檔案關聯相關的任何資訊。 在無基底合併中,您必須手動解決衝突。 在執行無基底合併並解決任何衝突之後,Team Foundation 會記錄合併歷程並建立資料夾和檔案之間的關聯。

當您執行 tf merge 時,Team Foundation 會在兩個項目於兩個之前相關的版本控制樹狀結構中擁有相同的相關名稱時,執行隱含無基底合併。 例如,您可能想合併相關分支 $SRC\ 和 $TGT。 這兩個分支都包含名為 a.txt 的不相關檔案。 如果這兩個檔案相同、FIPS 相容加密停用,而且原始程式檔與目標中的其他檔案不相關,則當您執行 tf merge 時,Team Foundation 會在這兩個 a.txt 檔案之間建立關聯。

如果您執行 tf merge 並設定 /noimplicitbaseless 選項,當 Team Foundation 嘗試合併兩個分支時,這兩個 a.txt 檔案會在簽入變更時,產生命名空間衝突。 若要解決衝突,您必須重新命名其中一個檔案。

範例

下列範例會從 MyFile_beta1 合併尚未合併至 MyFile_RTM 的變更。

c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive

下列範例會將變更集 137 合併至 branch2。

c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive

下列範例會將到變更集 137 為止的所有變更集合併至 branch2。

c:\projects>tf merge /version:C137 branch1 branch2 /recursive

下列範例列印 branch1 中尚未合併至 branch2 的變更集的清單。

c:\projects>tf merge /candidate branch1 branch2 /recursive

下列範例列印 branch2 中尚未合併回 branch1 的變更集的清單。

c:\projects>tf merge /candidate branch2 branch1 /recursive

下列範例捨棄變更集 137,不將其當做合併至 branch2 的候選項目。

c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive

請參閱

工作

解決兩個檔案之間的衝突

參考

命令列語法 (版本控制)

Branch 命令

Merges 命令

其他資源

Tf 命令列公用程式命令

分支及合併