3

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 も同じ動作をしているようです。

4

1 に答える 1

2

私はあなたが使うべきだと信じています

git merge --no-ff your_feature_branch
于 2013-11-14T19:23:50.373 に答える