裏紙に書く程度の内容

マージする - Git入門

Git入門の第6回目です。

今回はマージについて勉強していきます。

前回ブランチを切ってマージする作業までやってみましたが、コンフリクトが発生した場合は考慮していませんでした。
gitを使ってチームで作業する場合はコンフリクトは必ずと言っていいほど起こります。

その場合の対処の仕方を勉強していきましょう。

目次はこちら

コンフリクトとは

まず、「コンフリクト」って何?というところから。

日本語に訳すと「衝突」という意味です。

gitにおいては「修正箇所の衝突・バッティング」という意味になります。

やってみよう

簡単な例を見てみましょう。

masterに以下のtest.txtファイルがコミットされているものとします。

This is test file.

第一回 Git の勉強。Gitとは?

そこからdevelopブランチを作成し、以下の通り編集、コミットしておきます。

This is test file.

第六回 Git の勉強。コンフリクト時のマージ

一旦masterに戻ってから再度hotfixブランチを作成してdevelopとは異なる編集・コミットをします。

This is test file.

第1回 Git の勉強。Gitとは?

ここまで要約すると、developでは3行目の内容をガラッと変えました。hotfixでは「第一回」の数字を変えただけですね。

実際にはこれらが別の作業者によって行われたものと考えると理解しやすいでしょう。

続いて、マージしてみます。

まず、developのマージ。

$ git checkout master
Switched to branch 'master'

$ git merge --no-ff develop
Merge made by the 'recursive' strategy.
 test.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

特に問題無くマージできました。

続いてhotfixのマージ

$ git merge --no-ff hotfix
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.

いつもと違うメッセージが出てきました。

「Merge conflict in test.txt」と書いてありますね。test.txt内でのコンフリクトが検知されたようです。

手動マージしてみる

この時、問題のtest.txtファイルを開いてみると以下のようになっています。

This is test file.

<<<<<<< HEAD
第六回 Git の勉強。コンフリクト時のマージ
=======
第1回 Git の勉強。Gitとは?
>>>>>>> hotfix

<<<<<<< HEADというブロックと>>>>>>> hotfixというブロックが=======で区切られて並んでいます。

HEADは現在の最新の状態、hotfixはマージしようとしているブランチの内容です。ここではhotfixをマージしようとしているので、>>>>>>> hotfixとなっていますね。

で、これをマージするのですが、これは手作業になります。

上記のとおりコンフリクト部分が並んで表示されているので、正しい状態になおします。

This is test file.

第6回 Git の勉強。コンフリクト時のマージ

ここでは上記のように修正しました。developの内容を正としつつ、「第六回」となっていた部分を「第6回」に変更しています。hotfixでの修正も加味した状態ですね。

コミットする

マージ作業が出来たらコミットします。
コミットの方法は今迄通りです。

$ git commit -a -m 'merge commit'
[master 583f88d] merge commit

これでコンフリクトからマージまでの一連の作業は完了です。


簡単な例のみでしたが、前回とあわせてマージの方法はご理解いただけたかと思います。

が、重要な注意点が一つ。

実は今回のようなマージは前回とは違い、複数ブランチの修正を理解していないと難しい作業です。

チームで開発を進めている場合は一般的にはソース管理の責任者が行うことが理想でしょう。

基本的な使い方は網羅して、チームのいちメンバーとして作業はできるようになり、いよいよ管理側の目線での使い方の説明に入っています。

次回以降はもう少し管理者側での使い方に踏み込んでいきます。知らなくても問題ない部分ではありますが、ここからが本当に便利な機能でもあります。
gitを「使いこなす」という意味においてはここからが本題です。

知識があれば調べながらでも応用的な使い方もできるようになるので、余力がある人はぜひ読んでみてください。

今回の連載で初めてgitに触れるという方は、とりあえず運用してみてgitに慣れてから次のステップに進むといいでしょう。

広告
Index