ファイルをマージする場合は、2 つの別個の分岐内で行われた変更を組み合わせます。 たとえば、ソース分岐内のファイルの追加、編集、名前変更、削除、または削除取り消しを行う場合があります。 マージ操作では、このような種類の変更をターゲット分岐に統合します。 項目がソース分岐とターゲット分岐の両方で変更されている場合は、競合を解決するように求められます。
ファイルをマージするには、ソース管理エクスプローラーまたは Merge コマンドを使用します。
マージ操作中は、次のイベントが発生します。
操作では、ソース分岐内の追加されたファイルまたはフォルダーがすべて識別され、ターゲット分岐に対して、対応する項目の追加が試みられます。
注意
両方の分岐に含まれる同じ名前の項目をマージすると、Team Foundation によって暗黙のベースレス マージが実行されます。 ただし、tf merge コマンドで /noimplicitbaseless オプションを使用した場合は、ベースレス マージを使用して名前空間の競合を解決することはできません。 どちらかのファイルの名前を変更し、マージ操作を再度実行して、競合を解決する必要があります。
この操作では、両方の分岐内に存在している各項目の履歴が確認されます。 それぞれの項目について、ソース分岐に加えられた変更のうち、ターゲット分岐に加えられていない変更がターゲット分岐にマージされます。 項目が既にターゲット分岐で変更されている場合は、競合が報告されます。 マージの競合を解決する方法の詳細については、「2 つのファイル間の競合の解消 (Team Explorer Everywhere)」を参照してください。
マージ操作の実行中に、特定のバージョンの項目とすべての変更のどちらをマージするかを選択できます。
Team Foundation バージョン管理では、すべてのマージのレコードが保持されます。 この情報は、コマンド プロンプトで Merges コマンドを使用して確認できます。
このトピックの内容
ソース管理エクスプローラーからのマージ操作の開始
コマンド プロンプトからのマージ操作の開始
必要なアクセス許可
これらの手順を実行するには、次のアクセス許可を設定する必要があります。
ソース ツリー内の項目の [読み取り] のアクセス許可と、ターゲット ツリー内の項目の [チェックアウト] のアクセス許可を [許可] に設定している必要があります。
ターゲット パスの [マージ] のアクセス許可が必要です。
ターゲット ツリー内の項目の名前を変更する場合は、ソース ツリーとターゲット ツリーの両方の [チェックアウト] のアクセス許可が [許可] に設定されている必要があります。
この操作の影響を受けるファイルがロックされている場合、[ロック] のアクセス許可を [許可] に設定する必要があります。
詳細については、Microsoft Web サイトの「Team Foundation Server のアクセス許可」を参照してください。
ソース管理エクスプローラーからのマージ操作の開始
重要
Visual Studio Team Foundation Server 2010 のリリースでは、分岐とフォルダーを区別するようになりました。 たとえば、次の図では、分岐とフォルダーを示すアイコンが異なることがわかります。
フォルダーの分岐およびマージは使用できますが、ベスト プラクティスとして、分岐のみを分岐およびマージすることをお勧めします。 詳細については、「ファイルおよびフォルダーの分岐 (Team Explorer Everywhere)」を参照してください。
ソース管理エクスプローラーから分岐、ファイル、およびフォルダーをマージするには
ソース管理エクスプローラーで、マージする分岐、フォルダー、またはファイルを右クリックし、[マージ] をクリックします。
ソース管理マージ ウィザードが表示されます。
[ソース分岐] に、ソース分岐の名前を入力するか、[参照] をクリックして一覧からソース分岐を指定します。
[特定のバージョンまでのすべての変更] と [選択された変更セット] のいずれかをクリックし、マージする変更の範囲を指定します。
[特定のバージョンまでのすべての変更] をクリックすると、今後マージを行う際に競合のリスクが軽減されます。
[ターゲット分岐] で、変更のマージ先となるチーム プロジェクトの分岐を指定し、[次へ] をクリックします。
[バージョンの選択] ページが表示されます。
[バージョンの種類] ボックスの一覧で、次のいずれかのオプションをクリックします。
[最新バージョン] をクリックすると、バージョン コントロールの最新のバージョンに分岐が作成されます。
[変更セット] をクリックすると、[変更セット] ボックスに変更セット番号を指定できます。 または、省略記号 (...) をクリックして [変更セットの検索] ダイアログ ボックスを開きます。
詳細については、「変更セットの検索」を参照してください。
[ラベル] をクリックすると、[ラベル] ボックスにラベル名を入力できます。 または、省略記号 (...) をクリックして [ラベルの検索] ダイアログ ボックスを開くこともできます。
詳細については、「ラベルの一覧、検索、表示、編集、および削除」を参照してください。
[日付] をクリックした場合は、[日付] ボックスで日付を指定できます。
[ワークスペース バージョン] をクリックすると、[ワークスペース] ボックスに、コンピューターと Team Foundation Server ワークスペースを指定できます。
[次へ] をクリックし、[マージ操作の実行] ページで [完了] をクリックします。
(省略可能) 保留中の変更をチェックインします。
詳細については、「保留中の変更内容のチェックイン (Team Explorer Everywhere)」を参照してください。
コマンド プロンプトからのマージ操作の開始
tf merge コマンドを使用すると、既存のソース分岐の変更をターゲット分岐に適用できます。 ターゲット分岐には、個々のリビジョンをマージすることも、変更セット全体をマージすることもできます。 ソース分岐からターゲット分岐に変更をマージすることも、ターゲット分岐からソース分岐に変更をマージすることもできます。
ベースレス マージ
tf merge コマンドを使用すると、ベースレス マージ (相互に直接の分岐元でない項目のマージ) を実行できます。 ベースレス マージを実行するときに、Team Foundation は分岐に含まれるファイルの関係について情報を何も持っていません。 ベースレス マージでは、競合を手動で解決する必要があります。 ベースレス マージを実行して競合を解決すると、Team Foundation はマージ履歴を記録し、フォルダーとファイルの関係を確立します。
tf merge コマンドを使用すると、Team Foundation では、それまで関連のあった 2 つのバージョン管理ツリーに同じ相対名を持つ項目間で、暗黙のベースレス マージが実行されます。 たとえば、関連した分岐の SRC と TGT をマージするとします。 両方の分岐に a.txt という名前の関連のないファイルが含まれています。 tf merge を実行すると、2 つの a.txt ファイルが同じもので、Federal Information Processing Standard 準拠の暗号方式が無効になっていて、ソース ファイルがターゲット分岐内の他のどのファイルにも関連していなければ、Team Foundation はこの 2 つのファイルの関係を確立します。
tf merge を実行して /noimplicitbaseless オプションを指定した場合、変更をチェックインしようとすると 2 つの a.txt ファイルによって名前空間の競合が発生します。 競合を解決するには、どちらかのファイルの名前を変更する必要があります。
マージされていない変更セットの一覧を表示するには
コマンド プロンプトで、「tf merge –candidate Source Destination -recursive」と入力し、Enter キーを押します。
Source はソース分岐の名前に置き換え、Destination は変更のマージ先の分岐の名前に置き換えます。
詳細については、Microsoft Web サイトの「Merge コマンド」を参照してください。
コマンド プロンプトでフォルダーまたはファイルをマージするには
コマンド プロンプトで、「tf merge Source Destination -recursive」と入力し、Enter キーを押します。
Source は、変更のマージ元のソース ファイルまたはソース フォルダーの名前に置き換えます。 Destination は、変更のマージ先の分岐の名前に置き換えます。
詳細については、Microsoft Web サイトの「Merge コマンド」を参照してください。
参照
その他の技術情報
分岐とマージ (Team Explorer Everywhere)