LoginSignup
17
16

More than 5 years have passed since last update.

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

Posted at

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
各コミットの変更を確認したり。

17
16
0

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
17
16