Merge コマンド

merge コマンドは、ある分岐の変更を別の分岐に適用します。

注意

このコマンドの結果は、チェックイン操作を実行するまでは Team Foundation バージョン管理サーバーに反映されません。 詳細については、「保留中の変更のチェックイン」を参照してください。

必要なアクセス許可

merge コマンドを使用するには、destination を含むワークスペース フォルダーの [チェックアウト] のアクセス許可が [許可] に設定され、ソースを含むワークスペース フォルダーの [読み取り] のアクセス許可が [許可] に設定されている必要があります。 詳細については、「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

C2 など、 /version オプションに値を指定します。 Team Foundation でバージョン指定を解析してそのスコープ内にある項目を確認する方法の詳細については、「コマンド ライン構文 (バージョン管理)」を参照してください。

source

マージ元のファイルまたはフォルダーを指定します。

destination

マージ先のファイルまたはフォルダーを指定します。

username

/login オプションに値を指定します。 ユーザー名の値は、DOMAIN\UserName または UserName のいずれかとして指定できます。

オプション

説明

/recursive

source 項目の指定を、現在のディレクトリとそのサブフォルダーに適用します。

/force

マージ履歴を無視し、以前にマージされている変更も含めて、指定された変更すべてをマージ元からマージ先にマージします。

/candidate

マージ先にマージされたことのない、マージ元内の変更セットの一覧を出力します。 この一覧には、マージされたことのない変更セットの ID と、その変更セットに関するその他の基本情報が含まれます。

/discard

実行済みのマージをトラッキングし、マージ履歴を更新します。マージ操作は実行しません。 これにより、変更セットが特定のマージに対する使用から除外されます。

/version

選択的マージでは、このオプションによって、マージ先にマージする範囲を指定します。 キャッチアップ マージでは、このパラメーターによって、そのバージョン以前のすべてのマージされていない変更をマージするように指定します。

選択的マージの場合、バージョン範囲はマージされる変更セットの開始点と終了点を表します。 たとえば、バージョン 4 ~ 6 をマージすると、変更セット 4、5、および 6 がマージされます。

/lock

ロックの種類を指定するか、項目からロックを削除します。 詳細については、「ロックの種類について」を参照してください。

ロック オプション:

  • なし

    項目にロックは適用されず、既存のロックが項目から削除されます。

  • Checkin

    他のユーザーは指定された項目をチェックアウトできますが、現在のユーザーがチェックインを実行してロックを解放するまで、ロックされたファイルへのリビジョンをチェックインできません。 他のユーザーが、指定されたどの項目をロックしても、ロック操作は失敗します。

  • checkout

    明示的にロックが解放されるまで、指定した項目を他のユーザーがチェックインしたりチェックアウトしたりできないようにします。 指定した項目のいずれかが他のユーザーによってロックされている場合、または項目に対して保留中の変更が存在している場合、ロック操作は失敗します。

/preview

マージのプレビューを表示します。

/baseless

基本バージョンなしでマージを実行します。 つまり、マージの関係がないファイルとフォルダーをマージできます。 ベースレス マージの後にはマージの関係が成立するため、それ以降のマージをベースレスにする必要はありません。

メモメモ
ベースレス マージは、ターゲットにあるファイルを削除できません。このような変更は手動で引き継ぐことができます。

/noimplicitbaseless

関連のない 2 つのバージョン管理ツリーに同じ相対名を持つ 2 つの項目が存在しても、Team Foundation がベースレス マージを暗黙的に実行しないように指定します。

/nosummary

競合、エラー、および警告の概要を省略します。

/noprompt

入力用のプロンプトを表示しません。

/conservative

1 つの分岐を別の分岐にマージすると、競合が増えます。

/format

マージの競合を示す形式を指定します。

  • Brief: 既定値、競合、警告、およびエラーの合計数のみを示します。

  • Detailed: 競合、警告、およびエラーの合計数を示すと共に、各競合に関する詳細も一覧表示します。

注意   このオプションは、出力に競合の概要が含まれている場合にのみ適用されます。 /nosummary オプションを使用したり、マージが原因によって引き起こされる競合、警告、およびエラーが 10 以下の場合、概要は表示できません。

/login

Visual Studio Team Foundation Server でユーザーを認証するためのユーザー名とパスワードを指定します。

解説

tf コマンド ライン ユーティリティの merge コマンドを使用すると、既存のソース分岐の変更をターゲット分岐に適用できます。 ターゲット分岐には、個々のリビジョンをマージすることも、変更セット全体をマージすることもできます。 ソース分岐からターゲット分岐に変更をマージすることも、ターゲット分岐からソース分岐に変更をマージすることもできます。

また、merge コマンドを使用して、ターゲット分岐に移行されていない、ソース分岐内の変更を問い合わせることもできます。 さらに、このコマンドでは、マージ元からマージ先に今後マージしないようにする特定の変更を指定できます。これにより、該当する変更はマージ操作の対象として表示されなくなります。

tf コマンド ライン ユーティリティの使い方の詳細については、「Tf コマンド ライン ユーティリティのコマンド」を参照してください。

ベースレス マージ

ベースレス マージを使用すると、相互に直接の分岐元でない項目をマージできます。 ベースレス マージを実行するには、tf merge コマンドを使用する必要があります。 ベースレス マージを実行するとき、Team Foundation は分岐に含まれるファイルの関係について情報を何も持っていません。 ベースレス マージでは、手動競合解決を実行する必要があります。 ベースレス マージを実行して競合を解決すると、Team Foundation はマージ履歴を記録し、フォルダーとファイルの関係を確立します。

tf merge を実行するとき、それまで関連のあった 2 つのバージョン管理ツリーに同じ相対名を持つ項目が見つかると、Team Foundation によって暗黙のベースレス マージが実行されます。 たとえば、関連した分岐の $SRC\ と $TGT をマージするとします。 両方の分岐に a.txt という名前の関連のないファイルが含まれています。 tf merge を実行すると、2 つの a.txt ファイルが同じもので、FIPS 準拠の暗号方式が無効になっていて、ソース ファイルがターゲット内の他のどのファイルにも関連していなければ、Team Foundation はこの 2 つのファイルの関係を確立します。

/noimplicitbaseless オプションを設定して tf merge を実行した場合、Team Foundation はこの 2 つの分岐をマージしようとしますが、変更をチェックインしようとすると 2 つの a.txt ファイルが名前空間の競合を引き起こします。 競合を解決するには、どちらかのファイルの名前を変更する必要があります。

次の例は、MyFile_RTM にマージされたことのない変更を MyFile_beta1 からマージします。

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 branch1 branch2 /recursive

参照

処理手順

2 つのファイルの競合を解決する

参照

コマンド ライン構文 (バージョン管理)

Branch コマンド

Merges コマンド

その他の技術情報

Tf コマンド ライン ユーティリティのコマンド

分岐とマージ