125
129

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VSCodeでgitのconflictを解消させる話

Posted at

目的

今回は以下を行っていきます。

  • gitでconflictが発生する状況をちょっとだけ理解してみる
  • 実際にconflictを発生させてみる
  • 発生したconflictをVSCode上で解決してみる

※間違いや分かりにくい点は、どんどん指摘してもらえると助かります。(お手柔らかによろしくお願いします。。)

conflictって何??

 Untitled Diagram (1).png

簡単にconflictの発生する可能性のある作業フローのイメージを用意しました。
以下の手順で作業していくと仮定します。

  1. まず、Masterを元にしてBranch_AとBranch_Bを作成します。
  2. Branch_Aで、あるファイル(ここでは、conflict.txtとしておきます。)を修正します。
    修正した分をcommitしてMasterにPullRequestを行います。
    Masterに対して変更分をマージします。
  3. 次にBranch_Bでの作業に移ります。ここでもconflict.txtを修正します。(Branch_Aでの修正とは異なるようにすること)
    修正が完了したらcommitして、MasterにPullRequestを行います。

これでconflictが発生します。
つまり、複数人で開発している際に各々が別々のファイルで作業している分にはMasterに対して変更分がそのまま吸収されていきますが
同じファイルを修正していた際に、どちらの修正をMasterに反映させるか(あるいは、どちらの修正も反映させる)を判断してねと言われるのがconflictです。
conflictを日本語にすると『衝突』と言う意味になります。

実際にconflictを発生させてみよう!

理解できているかを判定するのに、自分の環境でも発生させてみます。

①Branch_Aで修正

スクリーンショット_2019-02-03_16_49_02.png
今回はconflict.txtに文章を追加しています。
これをcommitしてGitHub上でPullRequestをします。
今の段階ではconflictが発生しないので、そのままmergeします。
スクリーンショット_2019-02-03_17_03_34.png

②Branch_Bで修正

スクリーンショット_2019-02-03_17_31_27.png

①と同様にconflict.txtに文章を追加しています。
これをcommitしてGitHub上でPullRequestをします。

スクリーンショット_2019-02-03_17_35_35.png

conflictが発生しました。
ここからは、VSCode上でconflictの原因を調査していきます。

VSCode上でconflict解消を行う

具体的には以下の手順で行います。

  1. ローカルに保存してあるmasterを最新にする
  2. Branch_Bに対して、masterをMergeする
  3. Mergeした際にBranch_B上でconflictが発生して、VSCode上で確認できるので解消する
  4. 解消した分をcommitしてPushして、MergePullRequestができるようになっていることを確認

1.ローカルに保存してあるMasterを最新にする

masterに移動 git checkout master
masterの最新を取得 git pull

2. Branch_Bに対して、masterをMergeする

Branch_Bに移動 git checkout Branch_B
Branch_BにmasterをMergeする git merge master

3. Mergeした際にBranch_B上でconflictが発生して、VSCode上で確認できるので解消する

 スクリーンショット_2019-02-03_17_59_45.png

Accept Both Changeを選択します。

4. commitしてPush、MergePullRequestができるようになっていることを確認

あとは、MergePullRequestをして完了!

スクリーンショット_2019-02-03_18_18_28.png

まとめ

今回は単純なconflictを発生させて、それを解消する手順をまとめてみました。
しかし、ファイルの編集でのconflict以外にもファイルの存在に関わるconflictもあります。
色々なパターンを再現してみて、実務に役立てればいいかなと思っています。

125
129
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
125
129

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?