次のシナリオを検討してください。
$ git branch –a
* dev
master
$ git branch --contains 53fdfaf89fca499c36c71d29f25eb1a13b32d4d6
dev
$ git branch --contains f7dfb3689edcaf5f819fa5e691ce13abf858bca8
dev
master
$ git cherry master dev
+ 53fdfaf89fca499c36c71d29f25eb1a13b32d4d6
+ a4e66dbde954f73185d61bfb78b40ac5e61fe56c
+ 6fcffbd9b57e8a74726ea2cd3713f14baaaa06f5
+ 5031ad3cdf2e81c880e9cbf049abed6f1edde3bc
+ dcca33c373df6953ff164e8d70531abd71841278
しかし、ひねりを加えたのは、コミットf7dfb3689edcaf5f819fa5e691ce13abf858bca8
は実際には から選択されたもの53fdfaf89fca499c36c71d29f25eb1a13b32d4d6
であり、両方がまったく同じであるということです (何らかの理由で、コミット ID が異なる 2 つのまったく同じコミットが必要だったため、ご容赦ください) コミット メッセージとコミット ID 以外に、 2 つのコミットに違いはありません。
git cherry
ドキュメント
に従って、コミットは git patch-id プログラムから取得したパッチ ID と比較されます。
だから私は実際に先に進みgit patch-id
、以下のようにプログラムを実行しました
$ git show 53fdfaf89fca499c36c71d29f25eb1a13b32d4d6 | git patch-id
bd6c061bd6c380d53832510cbaf68bebb4fb182d 53fdfaf89fca499c36c71d29f25eb1a13b32d4d6
$ git show f7dfb3689edcaf5f819fa5e691ce13abf858bca8 | git patch-id
bd6c061bd6c380d53832510cbaf68bebb4fb182d f7dfb3689edcaf5f819fa5e691ce13abf858bca8
上記の結果は、git patch-id
実際には 2 つのコミットが同じであると認識していることを示していますが、それでもgit cherry
コマンドはそれを実行できません。
これが起こる唯一の理由は、git cherry
以外の要因を考慮した場合git patch-id
です。
ヘッド (つまり、私の場合は dev ブランチ) で行われたコミットの数を考慮していますか? dev ブランチには 2 つのバージョンのコミットがあり、master には 1 つしかないためです。