Git
GitExtensions

Git Extensionsで行うこわくないマージ

More than 5 years have passed since last update.

Git Extensionsでおこなう、こわくないマージ

Git Extensionsでマージ作業をしてみます。一部画面はまだ現在のリリース版のGit Extensions 2.43とは異なることがあります。

まっすぐなリポジトリの準備

まずは図に示すような、README.mdファイル一個、masterブランチ一個しかないまっすぐなリポジトリを準備してみます。
merge01.png

testブランチの作成

masterブランチからtestブランチを作成します。
merge02.png

まだ何もコミットしていないのでmasterブランチとtestブランチの内容は同一です。
merge03.png

testブランチへのコミット

README.mdを以下のように編集してtestブランチにコミットします。

README.md
# Testing

testing repository

## Hello Git!
Hello, Git world!

masterブランチへのコミット

masterブランチをチェックアウトします。
merge05.png

README.mdを以下のように編集してmasterブランチにコミットします。

README.md
# Testing

testing repository

## Hello Git
Hello, git world!

これでmasterブランチとtestブランチで内容が別れてしまいました。
merge06.png

testブランチのマージ

現在いるmasterブランチに、testブランチをマージします。
merge07.png

現在のブランチ: master、マージ対象: testとしてマージします。
merge08.png

どちらのブランチもREADME.mdを変更しているため、競合 (CONFLICT) が発生してしまいましたが落ち着いて「OK」を押しましょう。
merge09.png

「マージ競合の解決をしますか?」と聞かれます。「はい」を押すとKDiff3を使ったマージツールが起動するのですがいまいち使いやすくないので、ここは「いいえ」を押してください。
merge09-2.png

マージ作業

現在マージ作業中である警告がダイアログ右下に表示されているはずです。ここからエディタなどを用いて手作業でマージをおこなっていきましょう。
merge10.png

README.mdが以下のような状態になっています。

README.md
# Testing

testing repository

<<<<<<< HEAD
## Hello Git
Hello, git world!
=======
## Hello Git!
Hello, Git world!
>>>>>>> test

これは<<<<<<< HEAD=======に囲まれる部分がHEAD (現在のブランチ = master) の変更、
=======>>>>>>> testに囲まれる部分がtestブランチの変更であるという意味です。

両方の変更を取り込み以下のように編集します。

README.md
# Testing

testing repository

## Hello Git
Hello, Git world!

いつもどおりにコミットしてみましょう。
merge15.png

無事testブランチの内容がmasterブランチにマージされました。
merge16.png

コミットのグラフも「ここでマージしたよ」というのがわかりやすい表示になっていて、嬉しいですね。

Tips

コミット画面から「ファイルの履歴」などを選ぶと、そのファイルに関連する変更を確認できてマージの参考になります。是非役立たせてください。
merge13.png
選択して、
merge14.png
各コミットの変更を確認したり。