Merge コマンド (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>
/version
オプションに C2
などの値を指定します。 TFVC がバージョン指定を解析してそのスコープ内の項目を判別する方法の詳細については、「Team Foundation バージョン管理コマンドの使用」を参照してください。
<source>
ソースとして機能するファイルまたはフォルダーを指定します。
<destination>
ターゲットとして機能するファイルまたはフォルダーを指定します。
<username>
/login
オプションに値を指定します。 username
値は、DOMAIN\username
または username
として指定できます。
Options
オプション
説明
/recursive
現在のディレクトリとサブフォルダー内の source
項目の指定と一致させます。
/force
マージ履歴を無視し、指定した変更の一部またはすべてが以前にマージされた場合でも、ソースからターゲットにマージします。
/candidate
ターゲットにまだマージされていないソースのすべての変更セットの一覧を出力します。 一覧には、マージされていない変更セット ID と、その変更セットに関するその他の基本情報が含まれています。 特定の結果にあるアスタリスクは、部分的にマージされたことを示しています。つまり、変更セット内の一部の変更のみがマージされ、残りの変更はマージされていないことを意味します。
/discard
マージ操作は行いませんが、マージ履歴を更新して、マージが行われたことを追跡します。 これにより、特定のマージに使用された変更セットが破棄されます。
/version
選択的なマージの場合は、このオプションを使用して、ターゲットにマージする必要がある範囲を指定します。 キャッチアップ マージの場合、このパラメーターは、マージされていないすべての変更がマージされる前のバージョンを指定します。
選択的なマージの場合、バージョン範囲はマージする一連の変更の開始点と終了点を指定します。 たとえば、バージョン 4~6
をマージしようとすると、変更セット 4、5、6 がマージされます。
/lock
ロックの種類を指定するか、項目からロックを削除します。 詳細については、「ロックの種類について」を参照してください。
ロック オプション:
None
: 項目にロックを設定せず、項目から既存のロックを削除します。Checkin
: チェックインを実行してロックを解除するまで、他のユーザーは、指定した項目をチェックアウトできますが、ロックされたファイルのリビジョンはチェックインできません。 他のユーザーが、指定されたどの項目をロックしても、ロック操作は失敗します。Checkout
: ロックを明示的に解除するまで、指定した項目のいずれかにユーザーがチェックインまたはチェックアウトできないようにします。 他のユーザーが指定された項目のいずれかをロックした場合、または項目に対して保留中の変更が存在する場合、ロック操作は失敗します。
/preview
マージのプレビューを表示します。
/baseless
基本バージョンを使用せずにマージを実行します。 つまり、ユーザーはマージ リレーションシップがなくてもファイルとフォルダーをマージできます。 ベースレス マージの後、マージ リレーションシップが存在する場合、今後のマージをベースレスにする必要はありません。
注意
ベースレス マージでは、ターゲット内のファイルを削除できません。 このような変更を手動で引き継ぐことができます。
/noimplicitbaseless
TFVC が、関連のない 2 つのバージョン管理ツリーで同じ相対名を持つ 2 つの項目間で暗黙的なベースレス マージを行わないように指定します。
/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_beta1a からの変更をマージします。
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
次の例では、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
次の例では、branch2 にマージする候補として、変更セット 137 までのすべての変更セットを破棄します。
c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive