【Git】git branch –no-merged でマージされていないブランチを調べる

gitコマンドでマージされていないブランチを調べる

システム開発を続ける中では機能開発やバグ修正のために様々なブランチを作成します。リリース前にリリースブランチに対してマージ漏れが無いかの確認をgitコマンドで行うことができます。

git branch –no-mergedを使います。リモートブランチに対して実行するには -r オプションを付けます。

以下のようなブランチの状態だとします。

gitブランチの初期状態
ブランチの初期状態

このときmasterブランチをチェックアウトしてgit branch –no-mergedを実行すると以下のような結果になります。

$ git checkout master
$ git branch --no-merged
  branch1
  branch2

masterブランチにbranch1をマージするとブランチは以下のような状態になります。

$ git checkout master
$ git merge branch1
branch1をマージ後の状態
masterブランチへbranch1をマージした状態

git branch –no-mergedとgit ranch –mergedを実行すると以下のような結果になります。

$ git branch --no-merged
  branch2

$ git branch --merged
  branch1
* master

さらにmasterブランチにbranch2をマージするとブランチは以下のような状態になります。

$ git checkout branch2
$ git merge branch2
branch2をマージ後の状態
masterブランチへbranch2をマージした状態

この状態でgit branch –no-mergedとgit ranch –mergedを実行すると以下のような結果になります。

$ git branch --no-merged
# 何も表示されない

$ git branch --merged
  branch1
  branch2
* master

2つのブランチに差がない場合

以下のようにmasterブランチとbranch1に差がない状態でgit branch –no-mergedとgit ranch –mergedを実行すると以下のような結果になります。

masterとbranch1の差がない状態
masterとbranch1に差がない状態
$ git branch --no-merged
# 何も表示されない

$ git branch --merged
  branch1
* master

branch1がmasterブランチにマージされていると表示されます。

ファストフォワード可能な場合

branch1で1つコミットしてからbranch2を作成し、1つコミットします。この状態でgit branch –no-mergedとgit ranch –mergedを実行すると以下のような結果になります。

ブランチがファストフォワード可能な状態
ファストフォワード可能な状態
$ bit branch --no-merged
  branch1
  branch2

$ git branch --merged
* master

branch2をmasterにマージするとファストフォワードされて以下のような状態になります。

ファストフォワード後の状態
ファストフォワード後の状態

この状態でgit branch –no-mergedとgit ranch –mergedを実行すると以下のような結果になります。

$ git branch --no-merged
# 何も表示されない

$ git branch --merged
  branch1
  branch2
* master