競合変更の操作
2 人のユーザーが同じファイルを編集し、リポジトリーにコミットする 2 人目のユーザーが
2 人分の変更をコミットしようとした場合、競合があるためにリポジトリーがコミットを継続させません。Fred と Jane が同じファイルに変更を加える場合を例にとってこの状況をシミュレートしてみましょう。
- Fred のワークスペースで、ナビゲーション・ビューのうちの 1 つを開き、file1.txt を編集します。
以下のように変更します。
Fred line 1
This is the contents
Fred-update
of file 1.
- Fred はまた、file2.txt を以下のように変更します。
File2 is a (Fred was here again)
small file
with simple text.
- Fred が自分の変更をリポジトリーにコミットします。
- 次に、同時に Jane も file1.txt. を変更します。Jane は以下の行をファイルの最後に追加します。
This is the contents
Fred-update
of file 1.
Jane was at the end
- そして最後に Jane が file2.txt を以下のように変更します。
File2 is a (Jane was here) small
file
with simple text.
- Jane は、変更を完了すると、プロジェクトを同期化し、「同期化」ビューに以下が表示されます。
- file1.txt と file2.txt はいずれも競合する変更を含んでいることを示す赤いアイコンで表示されています。
競合が解消されるまでファイルをコミットすることはできません。
file1.txt をクリックし、Fred と Jane がファイルの別々の場所に変更を加えたことを確認します。
この場合は、Jane はファイルを更新することができ、Fred によって加えられた行は
Jane のローカル・ファイルにマージされます。file1.txt を選択し、コンテキスト・メニューから「更新」を選択します。
- 次に、file2.txt をダブルクリックして競合を見ます。この場合は、Jane も Fred も同じ行を変更したことがわかります。
この種の競合する変更では、通常の更新では競合を解消できません。
この場合は次の 3 つの選択肢があります (括弧内のコマンドを使います)。
Fred の変更を受け入れる (オーバーライドおよび更新)、Fred
の変更を無視する (マージ済みとしてマーク)、
または比較エディター内で手動でファイルをマージする、です。
- この例では Jane が file1.txt を更新し、file2.txt の「オーバーライドおよび更新」を
選択します。この操作が実行された後、競合は発信変更に代わります。
Jane は変更を確認し、これらをコミットします。