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 |
ロックの種類を指定するか、項目からロックを削除します。 詳細については、「ロックの種類について」を参照してください。 ロック オプション:
|
/preview |
マージのプレビューを表示します。 |
/baseless |
基本バージョンなしでマージを実行します。 つまり、マージの関係がないファイルとフォルダーをマージできます。 ベースレス マージの後にはマージの関係が成立するため、それ以降のマージをベースレスにする必要はありません。
メモ
ベースレス マージは、ターゲットにあるファイルを削除できません。このような変更は手動で引き継ぐことができます。
|
/noimplicitbaseless |
関連のない 2 つのバージョン管理ツリーに同じ相対名を持つ 2 つの項目が存在しても、Team Foundation がベースレス マージを暗黙的に実行しないように指定します。 |
/nosummary |
競合、エラー、および警告の概要を省略します。 |
/noprompt |
入力用のプロンプトを表示しません。 |
/conservative |
1 つの分岐を別の分岐にマージすると、競合が増えます。 |
/format |
マージの競合を示す形式を指定します。
注意 このオプションは、出力に競合の概要が含まれている場合にのみ適用されます。 /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