Team Foundation バージョン管理の競合の解決
発行: 2016年4月
Team Foundation バージョン管理を使用してファイルを管理する大きな利点は、複数のメンバーがファイルを同時に操作できることです。 欠点の 1 つは、場合によっては、ファイルを取得、チェックイン、アンシェルブ、マージ、またはロールバックする前に、競合を解決する必要があることです。
競合が発生すると手間がかかることもありますが、競合を把握して解決するのに役立つ情報とツールが用意されています。
競合の解決
すべての競合を自動解決する
個々の競合を自動マージする
個々の競合を手動解決する
自動解決のオプションを理解する
コマンド プロンプトから作業する
ヒントを取得する
競合の解決
[競合の解決] ウィンドウを使用して、操作を行えない原因となっている競合を解決します。
既定では、実行しようとした最後の動作によって発生した競合のみが表示されます。 ウィンドウがこの状態であると、"パス フィルターが適用されました" から始まるメッセージが表示されます。 ワークスペースにすべての競合を表示するには、[すべての競合を取得] をクリックします。 "n 個の競合" から始まるメッセージが表示されます。
ワークスペースでファイルを変更してから長時間が経過すると、新しい競合が発生している場合があります。 [競合の解決] ウィンドウの内容を更新するには、[最新の情報に更新] をクリックします。
それぞれの競合には、競合の解決に役立つ情報が表示され、ときにはリンクも表示されます。 詳細情報を取得するには、競合を選択して、以下の操作を実行します。
[履歴] をクリックすると、ファイルの履歴が表示されます。 競合の原因となった操作がマージまたはロール バックの場合、[履歴] の右にあるメニュー コントロールをクリックし、[ソースの履歴] または [ターゲットの履歴] をクリックします。
「項目の履歴の取得」を参照してください。
[注釈] をクリックすると、変更者、変更日時など、ファイルの最新バージョンに加えられたすべての変更について詳細が表示されます。 「注釈を使用したファイルの変更の表示」を参照してください。
[比較] をクリックします (またはボタンの右側にあるメニューをクリックして、コマンドをクリックします)。 [差分] ウィンドウが表示されます。
すべての競合を自動解決する
既定では、[すべてを自動解決] をオフにしていない限り、競合の自動解決が試みられます (「ヒント」を参照)。 [競合の解決] ウィンドウでは、手動で [すべてを自動解決] を選択して、次の操作を選択することもできます。
すべてのヒューリスティックを使用して競合を自動的に解決する場合、[すべての競合の種類] を選択します。
一部のヒューリスティックを除外して競合を解決する場合、[特定の競合の種類] を選択します。
[解決する競合の選択] ダイアログ ボックスが表示されます。 有効にするオプションをオンにし、無効にするオプションをオフにして、[自動解決] をクリックします。 詳細については、後述の「自動解決のオプションを理解する」を参照してください。
[保留中の変更] ウィンドウに表示される競合は、自動的に解決が試行されます。 自動解決できなかった競合は、そのままウィンドウに表示され続けます。 このような競合は手動解決する必要があります。
1 つの競合を自動マージする
後述の「自動解決のオプションを理解する」で説明されている自動マージのすべてのオプションを使用して、選択した競合の解決を試みる場合は、[自動マージ] をクリックします。
ヒント
複数の競合を選択するには、Ctrl キーまたは Shift キーを押しながら競合を選択します。
注意
[自動マージ] が無効な場合、この競合は手動で解決する必要があります。
1 つの競合を手動で解決する
競合が自動的に解決できない場合、または変更内容を自分で把握する場合は、手動で競合を解決する必要があります。 それぞれの競合について、競合の解決に使用できる操作が表示されます。 表示される操作は競合の種類や、競合の原因となった操作によって変わります。
マージ ツールで変更をマージする
競合するコンテンツの変更が競合の原因である場合は、[マージ ツールで変更をマージする] を選択できます。
この操作を選択すると、[マージ] ウィンドウが表示されます。
競合を解決する作業の結果は [結果] ペインに表示されます。
このウィンドウでは以下の操作を実行できます。
ウィンドウのレイアウトを選択します ([縦表示]、[横表示]、[混合表示])。
相違点と競合の間を移動できます。
結果に含める項目を左右のファイルから選択します。
結果ペインでファイルに追加する内容を入力します。
ファイルの履歴を表示します。 「項目の履歴の取得」を参照してください。
ファイルのさまざまなバージョンを比較します。
だれが何を変更したかがわかるようにファイルの注釈を入力します。 「注釈を使用したファイルの変更の表示」を参照してください。
[結果] ペインの内容に満足したら、[マージの許可] をクリックします。
自動解決のオプションを理解する
特殊なケースでは、[すべてを自動解決] で自動的に解決する競合の種類を制限した方がよい場合があります。
[すべてを自動解決] をクリックし [特定の競合の種類] をクリックすると、[解決する競合の選択] ダイアログ ボックスが表示されます。
自動解決に任せる競合が発生した原因 |
例 |
オンにするチェック ボックス |
---|---|---|
ファイルの各バージョンで、競合しないコンテンツ変更が行われた |
左側のファイル バージョンで、先頭に 0 が追加された。 右側のファイルで、最後に 3 が追加された。 |
[内容の変更が原因の競合] |
ワークスペース (取得操作中またはチェックイン操作中) またはターゲット バージョン (マージ操作中またはロールバック操作中) に固有のコンテンツ変更が行われた |
4 および 5 がワークスペースまたはターゲット バージョンに追加された。 |
[ローカル ワークスペースまたはターゲット分岐でのみ行った内容の変更が原因の競合] |
サーバー (取得操作中またはチェックイン操作中) またはソース バージョン (マージ操作中またはロールバック操作中) に固有のコンテンツ変更が行われた |
4 および 5 がサーバーまたはソース バージョンに追加された。 |
[サーバー バージョンまたはソース分岐でのみ行った内容の変更が原因の競合] |
サーバー上 (取得操作中またはチェックイン操作中) またはソース分岐内 (マージ操作中またはロールバック操作中) のファイルの名前が変更された |
launch.cs という名前のファイルをチェックアウトし、そのファイルで作業した。 その間に、他のユーザーが同じファイルに影響する変更セットをチェックインした。 その変更セットにより、ファイルのコンテンツは編集されなかったものの、ファイル名が start.cs に変更された。 |
[サーバー バージョンまたはソース分岐でのファイル名の変更が原因の競合] |
|
各バージョンに対する変更によって、ファイルのコンテンツが同一になった。 変更とは、たとえば次の例に示すようなファイルのコンテンツの変更です。 このオプションを使用して、他のすべての操作 (名前変更、削除、削除取り消し、分岐など) が原因で発生した、ファイルが同一になる競合も解決できます。 ヒント このチェック ボックスをオンにした場合、後続の手順でサーバー バージョンをワークスペースに取得 (ダウンロード) することで、これらの変更が解決されます。 |
[サーバーおよびワークスペースでの同一の変更が原因の競合] |
コマンド プロンプトから作業する
ヒント
既定では、[すべてを自動解決] の実行が自動的に試みられます。 このオプションを変更するには、メニュー バーで [ツール]、[オプション] の順にクリックし、[オプション] ダイアログ ボックスで [ソース管理] の [Visual Studio Team Foundation Server] に移動します。 [生成されたときに競合の自動的な解決を試行する] チェックボックスをオフにします。
大量の競合を解決するためにチームが共同作業をする必要がありますか (これは、たとえば、大規模なコードベースでマージ操作を実行した後に発生する可能性があります)。 その場合、共有開発コンピューターのパブリック ワークスペースが役立つ場合があります。 「ワークスペースの作成と操作」を参照してください。