Linux で Git 1.8.1.2 を使用して、並列に基づく 2 つの異なるブランチmaster(A と B と呼びます) に取り組んでおり、これら 2 つのブランチをマージする 3 つ目のブランチ (M と呼びます) も作成しました。 - 独自のコミットをマージします。
「プライマリ」ブランチ (A) の 1 つでいくつかの作業を行った後、マージ ブランチ ( ) をチェックアウトし、B (レポート) にgit checkout Mすべてが既に含まれていることを確認したので、A で新しい作業を取得しました。git merge BAlready up-to-date.git merge A
いくつかのマージ競合が報告されていますが、これは予期されたものです。影響を受けるファイルを編集して競合マーカーを削除し、次にgit addそれらを削除します。これまでのところ、すべて正常に見えます。
しかし、 Igit commitの場合、コミットメッセージはこれがマージであることを示しません。先に進むと、結果のコミット (M ブランチ内) は単純なコミット (以前の A と B のマージの上) のように見えます。親git showには報告しません。Merge:コミット前は(空)を.git含んでいますが、 はありません。MERGE_MODEMERGE_HEAD
私は特別なマージ戦略を使用していないので、デフォルト ( recursive) が使用されていると思います。とにかく、これは戦略上の問題のようには見えません。作業ツリーの内容は、私が期待するとおりに表示されます。
コミットする前に A のヘッドのハッシュで手動で作成するMERGE_HEADと、結果のコミットは通常のように見えますgitgが、もちろんこれには少し神経質になります。
何が起こっているのでしょうか?これは Git のバグですか? コミットを作成しなかったコマンドのMERGE_HEAD後に作成されない理由はありますか? git merge1.8.4.3 も同じ動作をしているようです。