[マージ] コマンド (Team Foundation バージョンコントロール)
Azure DevOps Services の |Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 |Visual Studio 2022
tf merge
コマンドは、Team Foundation Version Control (TFVC) でブランチ間で変更を適用します。
手記
このコマンドの結果は、チェックイン操作を実行するまで Azure DevOps サーバーには反映されません。 詳細については、「コードの開発と保留中の変更の管理」を参照してください。
前提 条件
構文
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
などの値を提供します。 TFVC がバージョン仕様を解析してスコープ内にある項目を決定する方法の詳細については、「Team Foundation バージョン管理コマンドを使用する」を参照してください。
<source>
マージのソースとして機能するファイルまたはフォルダーを指定します。
<destination>
マージ先として機能するファイルまたはフォルダーを指定します。
<username>
/login
オプションに値を提供します。
DOMAIN\username
または username
として username
値を指定できます。
オプション
オプションの
説明
/recursive
現在のディレクトリおよびサブフォルダー内の source
項目の指定と一致します。
/force
マージ履歴を無視し、指定した変更の一部またはすべてが以前にマージされた場合でも、ソースからコピー先にマージします。
/candidate
変換先にまだマージされていないソース内のすべての変更セットの一覧を出力します。 一覧には、マージされていない変更セット ID と、その変更セットに関するその他の基本情報が含まれている必要があります。 特定の結果のアスタリスクは、部分的にマージされたことを示します。つまり、変更セットの変更の一部がマージされ、その他の変更がマージされていないことを意味します。
/discard
マージ操作は行いませんが、マージ履歴を更新して、マージが発生したことを追跡します。 これにより、変更セットが特定のマージに使用されなくなります。
/version
選択的マージの場合、このオプションは、マージ先にマージする必要がある範囲を指定します。 キャッチアップ マージの場合、このパラメーターは、マージされていないすべての変更をマージする前のバージョンを指定します。
選択的マージの場合、バージョン範囲はマージする一連の変更の始点と終点を示します。 たとえば、バージョン 4~6
をマージしようとすると、変更セット 4、5、および 6 がマージされます。
/lock
ロックの種類を指定するか、項目からロックを削除します。 詳細については、「ロックの種類を理解する」を参照してください。
ロック オプション:
None
: アイテムにロックを設定せず、アイテムから既存のロックを削除します。Checkin
: 他のユーザーは指定されたアイテムをチェックアウトできますが、チェックインを実行してロックを解除するまで、ロックされたファイルのリビジョンをチェックインすることはできません。 他のユーザーが指定された項目のいずれかをロックした場合、ロック操作は失敗します。Checkout
: ロックを明示的に解除するまで、ユーザーが指定された項目のいずれかをチェックインまたはチェックアウトできないようにします。 他のユーザーが、指定された項目のいずれかをロックしている場合、またはいずれかの項目に対して保留中の変更が存在する場合、ロック操作は失敗します。
/preview
マージのプレビューを表示します。
/baseless
基本バージョンを使用せずにマージを実行します。 つまり、ユーザーは、マージリレーションシップを持たないファイルとフォルダーをマージできます。 ベースレスマージの後、マージリレーションシップが存在し、将来のマージはベースレスである必要はありません。
手記
ベースレスマージでは、ターゲット内のファイルを削除できません。 このような変更は、手動で引き継ぎすることができます。
/noimplicitbaseless
関連付けられていない 2 つのバージョンコントロール ツリー内の同じ相対名を持つ 2 つの項目間で、TFVC が暗黙的なベースレス マージを実行しないことを指定します。
/nosummary
競合、エラー、および警告の概要を省略します。
/noprompt
ユーザーからの入力を求めるメッセージが表示されないようにします。
/conservative
あるブランチを別のブランチにマージすると、より多くの競合が発生します。
/format
マージ競合を要約する形式を指定します。
-
Brief
(既定): 競合、警告、およびエラーの合計数のみを集計します。 -
Detailed
: 競合、警告、エラーの合計数だけでなく、各競合に関する詳細も一覧表示されます。
手記
このオプションは、出力に競合の概要が含まれている場合にのみ適用されます。
/nosummary
オプションを使用した場合、またはマージで発生した競合、警告、エラーが 10 個未満の場合は、概要を表示できません。
/login
Azure DevOps でユーザーを認証するためのユーザー名とパスワードを指定します。
備考
tf
コマンド ライン ユーティリティの merge
コマンドを使用して、既存のソース ブランチの変更を既存のターゲット ブランチに適用できます。 個々のリビジョンまたは完全な変更セットをターゲット ブランチにマージできます。 ソースからターゲット ブランチへの変更、または移行先からソース ブランチへの変更をマージできます。
merge
コマンドを使用すると、ターゲット ブランチに移行されていないソース ブランチの変更を照会することもできます。 また、このコマンドを使用すると、特定の変更がソースからコピー先にマージされることはなくなり、マージ操作の候補として表示されなくなります。
tf
コマンドライン ユーティリティの使用方法の詳細については、「Team Foundation バージョン管理コマンドを使用する」を参照してください。
ベースレスマージ
ベースレスマージを使用して、互いに直接分岐していないアイテムをマージします。 ベースレスマージを実行するには、tf merge
コマンドを使用する必要があります。 ベースレスマージを実行すると、TFVC にはブランチ内のファイルの関係に関する情報がありません。 ベースレスマージでは、手動で競合を解決する必要があります。 ベースレス マージを実行し、競合を解決すると、TFVC はマージ履歴を記録し、フォルダーとファイル間の関係を確立します。
tf merge
を実行すると、TFVC は、以前に関連する 2 つのバージョン管理ツリーで同じ相対名を持つ項目間で暗黙的なベースレス マージを実行します。 たとえば、関連する分岐を $SRC
して $TGT
をマージできます。 どちらのブランチにも、a.txtという名前の関連のないファイルが含まれています。
tf merge
を実行すると、2 つのファイルが同じで、FIPS 準拠の暗号化が無効になり、ソース ファイルがターゲット内の他のファイルに関連していない場合、TFVC は 2 つの a.txt ファイル間の関係を確立します。
/noimplicitbaseless
オプションを設定して tf merge
を実行した場合、TFVC が 2 つのブランチをマージしようとすると、変更をチェックインしようとしたときに、2 つの 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
次の例では、changeset 137 までのすべての変更セットを branch2にマージします。
c:\projects>tf merge /version:C137 branch1 branch2 /recursive
次の例では、branch2にマージされていない branch1 の変更セットの一覧を出力します。
c:\projects>tf merge /candidate branch1 branch2 /recursive
次の例では、branch1にマージされていない branch2 の変更セットの一覧を出力します。
c:\projects>tf merge /candidate branch2 branch1 /recursive
次の例では、変更セット 137 を、branch2へのマージの候補として破棄します。
c:\projects>tf merge /discard /version:C137~C137 branch1 branch2 /recursive
次の例では、changeset 137 までの変更セットをすべて、branch2にマージする候補として破棄します。
c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive