7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

未経験者は読まないとやばい!GitHubでのコンフリクト解消法

Last updated at Posted at 2023-05-01

コンフリクトとは

チームで開発をしている時に同じファイルの変更箇所が重複した時に起こることを
conflict(衝突)と言います。

image.png

引用 https://m-kenomemo.com/git-conflict/

コンフリクトの解消方法

1.git rebase
ブランチ元のポイントを変えていきます。

2.git merge
マージ先のブランチを違う方向にマージして解消します。こっちの方が簡単です。

git mergeを使った解消法

まずはわざとコンフリクトを発生させていきます。

  1. ブランチを作成
    まずはdvelopブランチの状態です。
1 //このリポジトリはテスト
2 テストするぞ
3 いえー

ブランチを作成します。 feature/green、feature/redを作ります。

training-git % git branch
* develop
  feature/green
  feature/red
  master

それぞれのブランチで以下のように作業をしてそれぞれのブランチでプルリクをだします。
feature/green

1//テストするぞ
2コンフリクトを起こすぞ!
3コンフリクトだ!

feature/red

1//このリポジトリはテスト
2conflict
3いやだー

にします。

するとプルリクを出すと下のような表示が出ます。これがconflictが起きている画面です。

スクリーンショット 2023-04-28 17.54.27.png

それでは解決をしていきます。

まずはdevelopブランチに移動します。その後pullします。

training-git % git checkout develop      
Switched to branch 'develop'
training-git % git pull origin develop
#省略
 branch            develop    -> FETCH_HEAD
   27b30e0..51fba42  develop    -> origin/develop
Updating 27b30e0..51fba42
Fast-forward
 test | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

そしてfeature/greenに移動してdevelopブランチにgit mergeします。

training-git % git checkout feature/green
Switched to branch 'feature/green'
training-git % git merge develop      
Auto-merging test
CONFLICT (content): Merge conflict in test
Automatic merge failed; fix conflicts and then commit the result.

するとこんな感じの画面になります。

スクリーンショット 2023-04-28 18.08.30.png

上に 現在の変更を取り込む、入力側の変更を取り込む、両方の変更を取り込む、現在の変更を取り込む
と表示されています。今は日本語設定になっていますが、英語設定だと表示が変わってきます
英語だとAcceptCurrentChange、AcceptIncomingChange、
AcceptBothChanges、CompareChangesと表示されます。

現在の変更を取り込むだとfeature/greenブランチにいるのでfeature/greenの内容が反映されます。

スクリーンショット 2023-04-28 18.18.31.png

ctrl + zで元に戻ります。

スクリーンショット 2023-04-28 18.21.07.png

入力側の変更を取り込むだとfeature/redブランチの内容が反映されます。

スクリーンショット 2023-04-28 18.22.22.png

両方の変更を取り込むと2つのブランチの内容が反映されます。

スクリーンショット 2023-04-28 18.27.06.png

変更の比較を押すと下のようになります。

スクリーンショット 2023-04-28 18.29.37.png

今回は両方を取り込みました。feature/greenブランチから

training-git % git add . 
training-git % git commit -m "コンフリクト解消"
training-git % git push origin feature/green

でpushした後GitHubを確認するとコンフリクトが解消されていました。

スクリーンショット 2023-04-28 18.38.32.png

まとめ

かなり簡単な内容ですが大事なので参考にしてみてください。

資料

7
8
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
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?