連載
» 2016年07月14日 05時00分 公開

Gitでコンフリクトしても慌てるな!! 解消に向けた3つの基本作業こっそり始めるGit/GitHub超入門(4)(2/2 ページ)

[平屋真吾,クラスメソッド]
前のページへ 1|2       

コンフリクトを解消する3ステップの実践

【ステップ1】コンフリクト発生箇所の確認

 hello.txtファイルを任意のエディタで開くと、以下のようになっています。

Hello
goodbye
konnichiwa
<<<<<<< HEAD
konbanwa
=======
sayounara
>>>>>>> third

 4〜6行目の間が、マージした時のカレントブランチの内容です。また、6〜8行目の間が「third」ブランチ(マージ元のブランチ)の内容です。「どちらを残すのか」または「どちらも残すのか」を決めなければなりません。

 ここでは、どちらも残すことにします。任意のエディタ上で4、6、8行目を削除し保存します。

Hello
goodbye
konnichiwa
konbanwa
sayounara

【ステップ2】「git status」コマンドと「git add」コマンド

 ここで「git status」コマンドを実行すると以下のようなメッセージが表示されます。「Unmerged paths」項目を見ると、「解決済みにするにはgit addコマンドを使用せよ」と書いてあります。

$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
 
Unmerged paths:
  (use "git add <file>..." to mark resolution)
 
    both modified:   hello.txt
 
no changes added to commit (use "git add" and/or "git commit -a")

 「git add」コマンドを実行します。

$ git add hello.txt
$ git status
On branch master
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)
 
Changes to be committed:
 
    modified:   hello.txt

 hello.txtファイルをコミットできるようになりました。

【ステップ3】「git commit」コマンド

 「git commit」コマンドを実行します。

$ git commit
[master da212e1] Merge branch 'third'
$ git status
On branch master
nothing to commit, working directory clean

 作業ディレクトリがクリーンな状態に戻りました。

コンフリクトが解消されたか確認

 最後に「git log --oneline --decorate」コマンドを実行してみます。

$ git log --oneline --decorate
da212e1 (HEAD -> master) Merge branch 'third'
ad169d4 add konbanwa to hello.txt
b6d5577 (third) add sayounara to hello.txt
d90401a add konnichiwa to hello.txt
8a0afb3 edit hello.txt
8d7430a first commit
図13 「third」と「master」で行った変更を統合した状態

 「third」と「master」ブランチで行った変更を統合する操作は、以上で完了です。「third」ブランチは不要になったので削除できます。

本記事で初めて登場したGitのコマンド

 本記事では「コンフリクトが発生したときの対処方法」について解説しました。

 本記事で初めて登場したGitのコマンドは以下の通りです。

  • git checkout -b {新規作成するブランチ名}:「ブランチの作成」と「ブランチの切り替え」を同時に行う

 次回は、前回と今回で紹介できなかった「ブランチ」の他の機能について解説する予定です。お楽しみに!

参考書籍

  • Pro Git』(written by Scott Chacon and Ben Straub and published by Apress)

著者紹介

平屋真吾

クラスメソッド株式会社 iPhoneアプリサービス事業部所属のプログラマーです。iOSアプリの開発がメインですが、デザインやAWSなども勉強中です。

ブログ:http://dev.classmethod.jp/author/hiraya-shingo/


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。