分享方式:


合併命令 (Team Foundation 版本控制)

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

Visual Studio 2019 |Visual Studio 2022

此命令tf merge會將一個分支的變更套用至 Team Foundation 版本控制 (TFVC) 中的另一個分支。

注意

除非您執行簽入作業,否則此命令的結果不會反映在 Azure DevOps 伺服器中。 如需詳細資訊,請參閱 開發程式碼和管理擱置中的變更

必要條件

若要使用 merge 命令,您必須將 [簽出] 權限設定為 [允許] ,才能包含 的工作區資料夾destination,而且您必須將 [讀取] 權限設定為 [允許] ,才能將包含 的source工作區資料夾設定為 。 如需詳細資訊,請參閱 預設 TFVC 許可權

語法

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

參數

引數

Argument

說明

<versionspec>

提供 選項的值,例如 C2 /version 。 如需 TFVC 如何剖析版本規格以判斷其範圍內哪些專案的詳細資訊,請參閱 使用 Team Foundation 版本控制命令

<source>

指定要作為合併來源的檔案或資料夾。

<destination>

指定要作為合併目的地的檔案或資料夾。

<username>

提供 選項的值 /login 。 您可以指定值 username 指定或 DOMAIN\username username

選項。

選項

說明

/recursive

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

/force

忽略合併歷程記錄,並將來源的指定變更合併至目的地,即使之前已合併部分或所有變更也一樣。

/candidate

列印來源中尚未合併至目的地的所有變更集清單。 清單應該包含尚未合併的變更集標識碼,以及該變更集的其他基本資訊。 指定結果的星號表示已部分合併,這表示已合併變更集中的某些變更,而其他變更尚未合併。

/discard

不會執行合併作業,但會更新合併歷程記錄來追蹤合併發生。 這會捨棄用於特定合併的變更集。

/version

若為選擇性合併,此選項會指定應該合併至目的地的範圍。 對於追趕合併,此參數會指定所有未合併變更應該合併之前的版本。

對於選擇性合併,版本範圍表示要合併之一組變更的起點和終點。 例如,如果您嘗試合併版本 4~6,則會合併變更集 4、5 和 6。

/lock

指定鎖定類型,或從專案移除鎖定。 如需詳細資訊,請參閱 瞭解鎖定類型

鎖定選項:

  • None:不會將鎖定放在專案上,而且會從專案中移除任何現有的鎖定。

  • Checkin:其他使用者可以簽出指定的專案,但除非您執行簽入來釋放鎖定,否則無法簽入鎖定檔案的修訂。 如果任何其他使用者已鎖定任何一個指定的專案,鎖定作業就會失敗。

  • Checkout:防止使用者簽入或取出任何一個指定的專案,直到您明確釋放鎖定為止。 如果任何其他使用者已鎖定任何一個指定的專案,或有任何專案的現有擱置變更,鎖定作業就會失敗。

/preview

顯示合併的預覽。

/baseless

執行不含基底版本的合併。 也就是說,允許使用者合並沒有合併關聯性的檔案和資料夾。 在無基底合併之後,合併關聯性就存在,而未來的合併不需要是無基數的。

注意

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

/noimplicitbaseless

指定 TFVC 不會在兩個不相關的版本控制樹狀結構中具有相同相對名稱的兩個專案之間執行隱含的無基底合併。

/nosummary

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

/noprompt

隱藏您輸入的任何提示。

/conservative

當您將一個分支合併到另一個分支時,會產生更多衝突。

/format

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

  • Brief (預設值):僅摘要說明衝突、警告和錯誤的總數。
  • Detailed:摘要說明衝突、警告和錯誤總數,也會列出每個衝突的詳細數據。

注意

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

/login

指定要向 Azure DevOps 驗證使用者的使用者名稱和密碼。

備註

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

此命令 merge 也可讓您查詢來源分支中尚未移轉至目標分支的變更。 命令也可讓您指出某些變更永遠不會從來源合併到目的地,而且不應該再顯示為合併作業的候選專案。

如需如何使用 tf 命令行公用程式的詳細資訊,請參閱 使用Team Foundation版本控制命令

無基底合併

使用無基底合併來合並未直接從彼此分支的專案。 若要執行無基底合併,您必須使用 tf merge 命令。 當您進行無基底合併時,TFVC 不會有任何關於分支中檔案關聯性的資訊。 在無基底合併中,您必須執行手動衝突解決。 執行無基底合併並解決任何衝突之後,TFVC 會記錄合併歷程記錄,並建立資料夾和檔案之間的關聯性。

當您執行 tf merge時,TFVC 會在兩個先前相關版本控制樹狀結構中具有相同相對名稱的專案之間執行隱含的無基底合併。 例如,您可能要合併相關的分支 $SRC$TGT。 這兩個分支都包含名為 a.txt 的不相關檔案。 當您執行 tf merge時,如果兩個檔案相同,TFVC 會建立兩 個a.txt 檔案之間的關聯性,FIPS 相容加密會停用,而且來源檔案與目標中任何其他檔案無關。

如果您使用選項集執行tf merge/noimplicitbaseless,當 TFVC 嘗試合併兩個分支時,當您嘗試簽入變更時,這兩個a.txt檔案會建立命名空間衝突。 若要解決衝突,您必須重新命名其中一個檔案。

範例

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

c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive

下列範例會將 changeset 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

下列範例會捨棄 changeset 137 作為合併至 branch2 的候選專案。

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

下列範例會將變更集 137 的所有變更集捨棄為合併至 branch2 的候選專案。

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