6

私は最初の主要なブランチとマージを調整するのにかなりの時間を費やしています。何が起こったのかというと、「main」というメイン ブランチと、「main」から「branch2」という新しいブランチが作成されたということです。数週間にわたっていくつかのファイルで「branch2」に多くの変更を加え、いくつかの新しいファイルも作成しました。また、この間に「メイン」にいくつかの小さな変更を加えました。マージする時が来たとき、「メイン」をチェックアウトして を呼び出しgit merge branch2ました。当然のことながら、私のファイルの 1 つに解決すべき競合があることを教えてくれました。そのgit mergetoolため、違いを解決するために、選択した差分ビューアであるmeldを開いていました。これらの違いを調整した後、git merge branch2再度電話をかけたところ、マージは正常に行われました。

問題は、実際には正常にマージされなかったことです。一部の要素は適切にマージされましたが、「branch2」の一部の変更は反映されず、理由がわかりません。に電話してみgit merge branch2ましたが、今は「すべて最新です」としか表示されません。これは明らかに正しくありませgit checkout branch2ん。

何が起こったのでしょうか?正しくマージされなかったのに、git が「すべて最新」と宣言するのはなぜですか? git に強制的にマージを再試行させる方法はありますか?

4

1 に答える 1

6

あなたは邪悪なマージをしました。何が起こっているのかを確認するために実行gitk --allします。2回目に電話したとき、あなたは間違ってgit mergeいました。競合を解決したら、git commitマージではなく、実行する必要があります。

branch2しかし、git は今、あなたが にマージされていると考えていますmain。したがって、そのマージコミットを削除する必要があります。gitk を使用して、マージ前の最後のコミットの sha を取得git reset --hard **SHA**し、メイン ブランチで実行して、その段階にリセットします。次に、マージを再度実行します。

于 2013-06-04T19:38:49.877 に答える