📌

git branch --merged について

2022/12/10に公開

git branch --mergedの挙動を確認しておきたかったのでメモ。

まとめ

  • 一度マージしても、その後コミットするとmergedから消える
  • cherry-pickでコミットを取り込んでもmergedにならない

マージしていない状態でmergedを確認

ブランチはmasterとbranch_1があり、まだマージしていません。
git log graphで確認します。

$ git log --graph --oneline --all --pretty=format:'%d'
*  (HEAD -> master)
| *  (branch_1)
|/
*

masterとbranch_1、それぞれにcheckoutしてmergedを確認します。

$ git branch --merged
* master

# branch_1にcheckoutした場合のmergedも確認する
$ git checkout branch_1
Switched to branch 'branch_1'

$ git branch --merged
* branch_1

それぞれ自身のブランチのみ出力されました。

masterにbranch_1をマージした状態でmergedを確認

masterにcheckoutしてbranch_1を取り込みます。

$ git checkout master
Switched to branch 'master'

$ git merge branch_1
Merge made by the 'ort' strategy.
 branch_1.txt | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 branch_1.txt

masterとbranch_1でそれぞれにcheckoutしてmergedを確認します。

$ git branch --merged
  branch_1
* master

$ git checkout branch_1
Switched to branch 'branch_1'

$ git branch --merged
* branch_1

masterにbranch_1をマージしたので、
masterで--mergedを実行した際、branch_1が表示されました。

branch_1のコミットをmasterにcherry-pickしてmergedを確認

branch_1にコミットをします。
以下コミット後のgit log graphです。

$ git log --graph --oneline --all --pretty=format:'%d %h'
*  (HEAD -> branch_1) e4099b7
| *    (master) 28ea2fb
| |\
| |/
|/|
* |  a8312f9
| *  f30469a
|/
*  d346c23

その後masterにcheckoutして、
先ほどbranch_1にコミットしたコミットをmasterにcherry-pickします。

$ git checkout master
Switched to branch 'master'

$ git cherry-pick e4099b7
[master 350e4bb] modify branch_1 file
 Date: Sun Nov 27 16:32:11 2022 +0900
 1 file changed, 10 insertions(+)

masterとbranch_1でmergedを確認します。

$ git checkout master
Already on 'master'

$ git branch --merged
* master

$ git checkout branch_1
Switched to branch 'branch_1'

$ git branch --merged
* branch_1

branch間で差分は無いはずですがmasterのmergedからbranch_1が消えました。

Discussion