Merge 命令
更新:2007 年 11 月
merge 命令將變更從一個分支套用到另一個分支。
注意事項: |
---|
在您執行簽入作業後,這個命令的結果才會反映在 Team Foundation 版本控制中。如需詳細資訊,請參閱 HOW TO:簽入暫止的變更。 |
必要的使用權限
若要使用 merge 命令,您必須將包含目的地或目標之工作區資料夾的 [簽出] 權限設定為 [允許],以進行合併作業。您也必須將包含來源之工作區資料夾的 [讀取] 權限設定為 [允許]。如需詳細資訊,請參閱 Team Foundation Server 使用權限。
tf merge [/recursive] [/force] [/candidate] [/discard]
[/version:versionspec] [/lock:none|checkin|checkout] [/preview]
[/baseless] [/nosummary] [/noimplicitbaseless] source destination
參數
引數 |
說明 |
---|---|
versionspec |
為 /version 選項指定一個值,例如 C2。如需 Team Foundation 如何剖析版本規格以便判斷哪些項目位於範圍內的詳細資訊,請參閱命令列語法 (Team System)。 |
source |
指定要當做合併來源的檔案或資料夾。 |
Destination |
指定要當做合併目的地或目標的檔案或資料夾。 |
選項 |
說明 |
---|---|
/recursive |
符合目前的目錄和任何子資料夾中的 source 項目規格。 |
/force |
忽略合併記錄,並將指定的變更從來源合併到目的地,即使之前已合併過某些或全部的變更。 |
/candidate |
列印來源中尚未合併到目的地的所有變更集的清單。清單應該包含尚未合併的變更集 ID 以及其他有關該變更集的基本資訊。 |
/discard |
不執行合併作業,但更新合併記錄以追蹤該合併已發生。這樣會捨棄變更集,而不用於特殊合併。 |
/version |
如果是執行選擇性的合併,這個選項會指定應該合併至目的地或目標的範圍。如果是執行更新性的合併,這個參數會指定版本,在此版本之前所有未合併的變更都會合併。 如果是執行選擇性的合併,版本範圍表示要合併之變更集的起始點和結束點。例如,如果嘗試合併版本 4~6,便會將變更集 4、5 和 6 合併。 |
/lock |
指定鎖定類型或移除項目的鎖定。如需詳細資訊,請參閱瞭解鎖定類型。 鎖定選項:
|
/preview |
顯示合併的預覽。 |
/baseless |
在沒有基底版本的情況下執行合併。換句話說,允許使用者合併不具有合併關聯性的檔案和資料夾。在無基底合併之後,將存在合併關聯性,而且日後進行合併時不需要以無基底的方式進行。 |
/nosummary |
當執行此項作業需要 10 行以上的輸出時,省略錯誤和警告的摘要。 |
/noimplicitbaseless |
指定 Team Foundation 將不會在兩個項目於兩個不相關的版本控制樹狀結構中擁有相同的相關名稱時,執行隱含無基底合併。 |
/noprompt |
抑制任何要求您輸入的提示。 |
備註
您可以使用 tf 命令行公用程式的 merge 命令,將現有來源分支中的變更套用至現有的目標分支。您可以將個別的修訂或完整的變更集合併到目標分支。您可以將變更從來源合併到目標分支,或從目標合併到來源分支。
merge 命令還可讓您在來源分支中查詢尚未移轉到目標分支的變更。此外,它還可讓您指出特定的變更絕不會從來源合併至目標,且不能再顯示為合併作業的候選項目。
如需如何尋找 tf 命令列公用程式的詳細資訊,請參閱 Tf 命令列公用程式命令。
無基底合併
使用無基底合併可將不是彼此直接分支的項目加以合併。若要執行無基底合併,您必須使用 tfmerge 命令。當您執行無基底合併時,Team Foundation 不會有任何與分支中檔案關聯相關的任何資訊。在無基底合併中,您必須手動解決衝突。在執行無基底合併並解決任何衝突之後,Team Foundation 會記錄合併歷程並建立資料夾和檔案之間的關聯。
當您執行 tfmerge 時,Team Foundation 會在兩個項目於兩個之前相關的版本控制樹狀結構中擁有相同的相關名稱時,執行隱含無基底合併。例如,您可能想合併相關分支 $SRC\ 和 $TGT。這兩個分支都包含名為 a.txt 的不相關檔案。如果這兩個檔案相同、FIPS 相容加密停用,而且原始程式檔與目標中的其他檔案不相關,則當您執行 tfmerge 時,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
下列範例會將 branch1 的第一個變更集到變更集 137 (包含在內) 的所有變更集都加以合併。
c:\projects>tf merge /version:C137 branch1 branch2 /recursive
下列範例會將變更集 100 到變更集 137 (包含在內) 的所有變更都加以合併。
c:\projects>tf merge /version:C100~137 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