Gitのブランチマージとマージで発生するコンフリクトを解決する方法

Gitのブランチをマージすると、別々のブランチで開発されたコードを統合して新しいブランチに結合することができます。 ブランチマージには次のコマンドを使います。

git merge <ブランチ名>

マージ手順

  1. マージされる側のブランチに切り替える

    git switch main
  2. マージコマンドを実行する

    git merge feature-branch
  3. リモートにコミットをpushする

    git push --all origin

ブランチの削除

通常、マージ後に不要になったブランチは削除します。

  1. マージしたローカルのブランチを削除する

    git branch -d feature-branch
  2. リモートのブランチを削除する

    git push origin --delete feature-branch

fast-forward時のマージログ

git mergeでブランチが先行して進んでいた場合(fast-forwardマージ)、Merge branchのログは追加されません。
fast-forwardマージ時にMerge branchログを追加する場合は、マージ時に--no-ffオプションを付けてマージコマンドを実行します。

git merge --no-ff feature-branch

マージを取り消す

まだリモートへpushしていない場合のみ。

git reset --hard HEAD^

リモートにpushしていた場合。この場合、マージを取り消したログも追加されます。

git revert -m 1 HEAD

ブランチがマージ済みかどうかを確認する

git branchコマンドを使用して、どのブランチがマージされたかを確認できます。

マージ済みブランチを表示

git branch --merged

まだマージされていないブランチを表示

git branch --no-merged

コンフリクト発生時

以下ではGitでブランチをマージする際に発生するコンフリクトの解消方法について解説します。Gitでマージを行うときにコンフリクトが発生することはよくあることですが、本記事を参考にしっかりと対処することでスムーズにマージを完了することができます。

コンフリクト発生時は次のようなメッセージが表示されます。

Auto-merging <ファイル名>
CONFLICT (content): Merge conflict in <ファイル名>
Automatic merge failed; fix conflicts and then commit the result.

この状態でgit statusコマンドを実行すると、次のようにUnmerged pathsが表示されます。

On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   <ファイル名>

コンフリクトの解消方法

  1. エディタなどを使ってコンフリクトの発生したファイルを修正する

  2. 次のコマンドを実行し、コンフリクトしているファイルをステージングする

    git add <ファイル名>

    この状態でgit statusコマンドを実行すると次のように表示される

    On branch master
    All conflicts fixed but you are still merging.
    (use "git commit" to conclude merge)
  3. 全てのコンフリクトファイルを修正・ステージングしたら、次のコマンドを実行してマージを完了する

    git commit

    または

    git merge --continue
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

スポンサードリンク

関連コンテンツ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です