プログラミングノート

プログラミングの備忘録です

TortoiseGit ブランチを統合(マージ)する 第6回

主軸のブランチを分岐させて作業用のブランチを作成します。作業用のブランチで変更作業が終わると、主軸のブランチに統合して変更を反映させます。統合について書きます。

 

HEADとは

現在のブランチの最新の版(コミット)です。

 

マージ

マージには2種類あります。

 

1.ファストフォワード

分岐元を「親ブランチ」分岐先を「子ブランチ」とすると、親ブランチに変更がなく子ブランチに変更があり、子ブランチの最新の版(コミット)をHEADとすることをファーストフォワードといいます。実際に内容を統合しません。

 

2.ファーストフォワードしないマージ

内容を統合(マージ)しコミットして新しい版(コミット)を作成します。作成した新しい版(コミット)をHEADとすることをファーストフォワードしないマージといいます。

 

TortoiseGitでのマージ操作

  1. 作業フォルダを右クリックして表示されるメニューで、「TortoiseGit」>「マージ」をクリックすると、マージ画面が表示されます。
  2. マージ画面で、現在のHEADにどの版(コミット)をマージするのか「From」に入力します。
  3. 競合がなくマージを完了すると、「Gitコマンド実行中」画面に「成功」が表示されます。「閉じる」ボタンを押します。

マージ画面の「オプション」で「ファーストフォワードしない」を選択せずマージを実行すると、ファーストフォワードが可能な場合は、ファーストフォワードします。

 

競合がある場合の操作

競合があると、Gitコマンド実行中画面が表示され、マージが中断されます。

  1. 競合の解決ボタンを押すと、コミット画面が表示されます。
  2. コミット画面で競合があるファイルのファイル名をクリックすると、TortoiseGitMerge画面が表示されます。左ブロックに「あちら側」としてマージ画面でFromに指定した版(コミット)の内容が表示され、右ブロックに「こちら側」として現在のブランチのHEADの内容が表示されます。下ブロックの「マージ済み」で競合の解消を行います。
  3. 「?????・・・」が表示されている部分を修正します。行内をクリックすると行を選択することができ、選択した行は太枠で囲まれます。コピーや貼り付けをしたり直接入力をして競合を解消します。
  4. 画面上にあるメニューの「解決済みとする」をクリックします。
  5. コミット画面でコミットします。
  6. コミットを完了すると、「Gitコマンド実行中」画面に「成功」が表示されます。「閉じる」ボタンを押します。

 

リベース

主軸(ベース)のブランチを別のブランチに付け替えることです。新しい主軸のブランチに含まれていない変更すべてを、新しい主軸のブランチの版(コミット)に反映させる必要があります。

統合する目的でリベースを使うことができますが、共有リポジトリでリベースすることはできません。その理由は、リベースすると失われる版(コミット)情報があり、リベースした後プッシュできなくなる恐れがあるためです。

 

TortoiseGitでのリベース操作

  1. 作業フォルダを右クリックして表示されるメニューで、「TortoiseGit」>「リベース(ブランチの付け替え)」をクリックすると、リベース画面が表示されます。
  2. リベース画面で、「ブランチ」に新しい主軸のブランチ、「上流」に前の主軸のブランチを入力します。
  3. リベースにより反映される変更が一覧表示されます。採用する変更を確認の上、「リベース開始」をクリックします。
  4. 競合があるとリベースが中断されます。リベース画面で競合があったファイルのファイル名をクリックすると、TortoiseGitMerge画面に競合内容が表示されます。競合を解消してコミットします。リベースが完了するまで競合の解消を繰り返します。
  5. リベースが完了したら、「終了」をクリックします。

 

  • リベース画面で「ブランチ」に入力した方が「こちら」となり、「上流」に入力した方が「あちら」となります。
  • リベース画面の反映される変更一覧で変更を選択すると、変更対象の項目(ファイルなど)が表示されます。
  • 競合を解消する操作は、上記の「競合がある場合の操作」の3と4をご参照ください。

 

リビジョングラフ画面を見ると、枝分かれしていた変更履歴が一本になり、リベースできたことがわかります。

リビジョングラフ画面は、作業フォルダを右クリックして表示されるメニューで「TortoiseGit」>「リビジョングラフ」をクリックして表示します。

 

TortoiseGitでの操作

 ログ画面の表示

  1. 作業フォルダを右クリックして表示されるメニューで、「TortoiseGit」>「ログを表示」をクリックすると、ログメッセージ画面が表示されます。
  2. ログメッセージ画面の上部にある変更一覧で変更を選択すると、画面下部に変更された項目(ファイルなど)が表示されます。
  3. 変更された項目(ファイル名など)をクリックすると、TortoiseGitMerge画面に変更された項目の内容が表示されます。右ブロックに選択した変更の版(コミット)が表示され、左ブロックにその一つ前の版(コミット)が表示されます。

 

ブランチの削除

 

  1. 作業フォルダを右クリックして表示されるメニューで、「TortoiseGit」>「リファレンスをブラウズ」をクリックすると、リファレンスをブラウズ画面が表示されます。
  2. リファレンスをブラウズ画面で、ブランチ名を右クリックして表示されるメニューで、「ブランチを削除」をクリックします。

 

参照

Gitを使ったバージョン管理【Gitの基本】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ

TortoiseGit の基礎勉強 〜TortoiseGit によるバージョン管理を使う〜 — バージョン管理システム入門(初心者向け)

 

最後に

Gitの基礎とToitorseGitを学んで、競合の解消が難しいと思いました。これからToitorseGitを使っていき、さまざまな状況を通して対処方法を学んでいきたいと思います。

記事一覧

第1回 はじめてのバージョン管理システム Git

第2回 TortoiseGit Windows(64bit)にTortoiseGitをインストールする

第3回 TortoiseGit ローカルマシン上の作業フォルダの変更履歴を管理する

第4回 TortoiseGit 共有ファイルの変更履歴を管理する

第5回 TortoiseGit ブランチを使って効率的に変更作業を行う

第6回 TortoiseGit ブランチを統合(マージ)する