PhpStorm 2019.3ヘルプ

競合を解決

バージョン管理システムによっては、状況によっては競合が発生することがあります。

チームで作業をしているとき、誰かが現在取り組んでいるファイルへの変更をコミットするという状況に遭遇するかもしれません。これらの変更が重複しない場合(つまり、異なるコード行に変更が加えられた場合)、競合するファイルは自動的にマージされます。ただし、同じ行が影響を受けると、バージョン管理システムはランダムに片側を選択することができず、競合を解決するように求められます。

ブランチをマージ、リベースまたはチェリーピックするときにも衝突が発生する可能性があります。

非分散バージョン管理システム

サーバー上で新しいバージョンを持つファイルを編集しようとすると、PhpStormはそれを知らせ、エディターにポップアップメッセージを表示します。

conflicts warning
この場合、ファイルを変更する前にローカルバージョンを更新するか、後で変更をマージする必要があります。

より新しいリポジトリ・バージョンを持つファイルをコミットしようとすると、コミットは失敗し、コミットしようとしているファイルが古くなっていることを示すエラーが右下に表示されます。

すでにローカルに変更されているファイルを、他の誰かによってコミットされた新しいリポジトリバージョンと同期すると、競合が発生します。競合するファイルは、競合とマージステータスを取得します。ファイルは、バージョン管理ツールウィンドウ Alt+9ローカルの変更タブの同じ変更リストに残りますが、その名前は赤で強調表示されます。ファイルが現在エディターで開かれている場合、タブヘッダーのファイル名も赤で強調表示されます。

分散バージョン管理システム

GitやMercurialなどの分散バージョン管理システムでは、ローカルにコミットしたファイルに最新のアップストリームバージョンとコードの同じ行への変更がある場合、次の操作のいずれかを実行しようとすると競合が発生します: プルマージリベースチェリーピックアンスタッシュパッチの適用

競合が発生した場合、これらの操作は失敗し、アップストリームバージョンを受け入れるか、ご使用のバージョンを優先するか、手動で変更をマージするように求められます。

PhpStorm: VCS operation conflicts dialog

PhpStormは競合をローカルに解決するためのツールを提供します。このツールは3つのペインで構成されています。左側のペインには、読み取り専用のローカルコピーが表示されます。右側のペインに、リポジトリにチェックインされた読み取り専用バージョンが表示されます。中央のペインには、マージと競合解決の結果が表示される完全機能エディターが表示されています。当初、このペインの内容はファイルのベースリビジョン、つまり、競合する両方のバージョンの派生元のリビジョンと同じです。

競合の解決

  1. 競合ダイアログでマージをクリックするか、エディターで競合するファイルを選択し、メインメニューからVCS | <あなたのVCS> | 競合を解決を選択します。

  2. 矛盾しないすべての変更を自動的にマージするには、ツールバーの the Apply Non-Conflicting Changes buttonすべての非競合変更を適用)をクリックします。また、the Apply Non-Conflicting Changes from the Left button非競合の変更を左側から適用する)と the Apply Non-Conflicting Changes from teh Right button非競合の変更を右側から適用する)を使用して、ダイアログの左/右部分からの矛盾しない変更をそれぞれマージすることもできます。

  3. 競合を解決するには、左(ローカル)バージョンと右(リポジトリ)バージョンに適用するアクション( the Accept button を受け入れるか the Ignore buttonを無視する)を選択し、中央ペインで結果のコードを確認する必要があります。

    Resolving conflicts

    中央ペインで競合を右クリックして、コンテキストからコマンドを使用することもできます。左を使用して解決するコマンドと右を使用して解決するコマンドは、一方からの変更を受け入れ、もう一方からの変更を無視するためのショートカットを提供します。

    the context menu of a conflicting change

    単純な競合(たとえば、同じ行の先頭と末尾が異なるファイルリビジョンで変更されている場合)の場合、ワンクリックで変更をマージできる単純な衝突を解決する the Resolve simple conflicts button オプションを使用できます。

    the Resolve Simple Conflicts button

    このような競合は、すべての非競合変更を適用アクションでは解決されません。なぜなら、それらが適切に解決されていることを確認する必要があるからです。

  4. 競合を解決するために、異なるバージョンを比較することも有用な場合があります。 the Compare contents button ツールバーボタンを使用して、オプションのリストを呼び出します。ベースは、ローカルバージョンとリポジトリバージョンが由来するファイルバージョン(最初は中央のペインに表示されます)を参照し、垂直方向の中央は結果バージョンを参照します。

  5. 中央パネルでマージ結果を確認し、適用をクリックします。

生産性のヒント

競合しない変更を自動的に適用する

マージダイアログから行うように指示する代わりに、常に競合しない変更を自動的に適用するようにPhpStormを構成できます。これを行うには、設定/環境設定ダイアログ Ctrl+Alt+Sで、左側のツール | 差分 & マージに移動し、競合しない変更を自動的に適用するオプションを選択します。

中央ペインで変更を管理する

中央のペインで変更を管理するには、ガターの変更マーカーの上にマウスカーソルを置いてクリックしたときに表示されるツールバーを使用します。ツールバーは、変更された行の以前の内容を示す枠とともに表示されます。

the change toolbar

例:競合しない変更が複数あり、それらのうち1つまたは2つをスキップする必要がある場合は、すべての非競合変更を適用アクションを使用してそれらすべてを同時に適用してから、このツールバーの前回保存した状態に戻すアクションを使用して不要な変更を元に戻します。

最終更新日: 2020年1月15日