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