LoginSignup
1
0

More than 3 years have passed since last update.

gitのコンフリクトの解消

Last updated at Posted at 2019-11-18

はじめに

未来電子テクノロジーでインターンをしているやっきーです。

まだまだ勉強中のため、間違いがあればどんどん指摘してください。

gitのブランチとは?

gitでは、ブランチという仕組みを使って様々な機能を追加していきます。ブランチ(branch)とは木の枝を意味しています。gitのブランチも、1本の幹から複数の枝に分岐していく様子と似ています。
ブランチでは、ソフトウェアの新たな機能の追加、細かなバグの修正などを同時並行で行うことができます。また、それぞれの修正が他の変更に影響するかを確かめてから(masterブランチにある)本来のファイルを書き換えることができることが大きなメリットです。

        D     #バグ修正用ブランチ
    /  \
      C---E  #機能追加用ブランチ
     /     \
A---B---F---G #masterブランチ

コンフリクト

それぞれのブランチで作成した(変更した)ファイルをmasterブランチに統合するとき、分岐したブランチで行った変更とmasterブランチで行った変更が一致しないとき、ユーザーがどのように統合するか操作する必要があります。

マージ(merge)

コンフリクトと発生している部分を手動で解決します。
コンフリクトの起きた状態では、コードは以下のように表示されます。(VS codeの例)
スクリーンショット 2019-11-16 11.58.02.png

上が今コミットしようとした内容、下が以前コミットしようとした内容です。手動で文を消してマージを確定することもできます。また、写真の場合は「現在の変更を取り込む」などをクリックすることでマージを確定することもできます。

この場合、コミットの履歴はブランチの分岐も含めて全て残ります。

リベース(rebase)

リベースでは、分岐したコミットを元から分岐していなかったように調整することです。分岐した際の差分を最新のmasterブランチのコミットに適用し、履歴が1本の線になるように修正します。

        D     
    /  \
      C---E  
     /     \
A---B---F---G #masterブランチ

このように分かれていたものが、

A--B--F--G--C--E--D

というように、別のブランチで行っていた変更を後から追加していきます。分かれていたブランチは削除します。コミットの履歴もブランチの分岐がなかったかのように書き換えられます。
リベースすると、コミットの順序が変更されるため、公開されているリポジトリにリベースを行うと他の人の作業にも影響が出るため、行ってはいけません。

参考URL

git mergeでブランチをマージしよう!いろんな疑問を徹底解説 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト
Git - リベース
[Git] rebaseとmergeの使い分け - Qiita

1
0
1

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
1
0