0
0

More than 3 years have passed since last update.

プルリクエストでコンフリクトが発生した際の対処法

Last updated at Posted at 2021-09-12

そもそもコンフリクトとは?

直訳すると「衝突」という意味。

ファイル上で「自分の作業」と「他人の作業」が重複してしまった状態のことを指す。
 

発生原因

「同一ファイル」の「同一箇所」を複数人が編集した状態でマージした時に発生する。

また、ローカルブランチをpushした後にmasterブランチに変更を加えてしまうことでも発生する。
 

git pull –rebase を使った対処法

<手順>

1, masterブランチを最新にして、作業ブランチをチェックアウト

$ git checkout master
$ git fetch origin
$ git pull origin master
$ git checkout [作業ブランチ]

2, 作業ブランチに対してmasterブランチをrebaseする

$ git pull --rebase origin master

3, コンフリクトがあれば直す

error: Failed to merge in the changes.
#このようなエラーが発生したらコンフリクトなので対象ファイルを修正
#対象のファイルを開くと、コンフリクト起こした部分は以下のように表示される

<<<<<<< HEAD
[作業ブランチでの変更内容]
...
=======
[マージしたブランチでの変更内容]
...
>>>>>>> develop

コンフリクトが発生しなくなるまで上記手順を繰り返す。

 

git pull origin master実行時にコンフリクトした時の対処法

<原因>

ローカルブランチをpushした後にmasterブランチに変更を加えてしまうことで、origin/master(リモートリポジトリ)とmaster(ローカルリポジトリ)の状態に差異が生じてしまっていること。

<対処法>

現在のブランチの状態を「強制的に」他のブランチの状態に合わせるときの方法として、git reset --hard を利用する。

$ git reset --hard origin/master  # 現在のブランチの状態をorigin/masterに合わせる

⚠️ git reset --hardを実行すると手元にある作業ツリーとインデックスの変更内容は、すべてふっとんで消えてなくなるので、バックアップを取るなどして実行前は注意する必要がある。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0