5

マージが不良でした。GitHubにプッシュするまでマージが不良であるとは知りませんでしたが、元に戻す/元に戻す方法がわかりません。

ストーリーは次のようになります。

私は2つの異なるブランチを開き、それらのブランチにいくつかの変更を加えました。しばらくして、これらのブランチをマスターブランチにマージすることにし$ git merge branch_name、この目的で使用します。最初のブランチをマージし、その後マスターブランチのログをチェックアウトしました。そのブランチのすべてのコミットはマスター上にありました。次に、同じコマンドで2番目のブランチのマージを続行しました。次に、マスターのログを再度確認しました。ここで、マージしたブランチのコミットに、「mergebranchbranch_name」というコメント付きのコミットが含まれていることがわかりました。他のブランチをマージしたとき、このようなコメントは含まれていませんでした。

簡単に言えば、問題は、gitが最初のブランチのコミットをマスターのコミットであるかのようにマスターにマージしたことです。'GitHub'のネットワークグラフまたは'gitg'のグラフを調べると、最初のブランチのトレースは残っていませんが、そのコミットはマスターブランチのコミットとして表示されます。2番目のブランチには問題はありません。個別に表示され、期待どおりにマージされます。$ git branch -d branch_nameまた、マージコマンドを実行した後、残念ながら、最も緊急なことであるように、によってブランチを削除し続けたことにも注意してください。

ここで、2つの連続したマージを実行する直前の位置に戻りたいと思います。どんな助けでも大歓迎です。なぜこれが起こったのかについてコメントすれば、それもまた喜ばれるでしょう。

4

1 に答える 1

4
  1. 削除した古いトピックブランチの先頭であったコミットを見つけます。それらは、マージコミットの2つの親である必要があります。それらを再びブランチにします(git branchまたはgit checkout -bうまくトリックを行います)。

  2. masterを使用して元の位置に戻しますgit reset。この時点で、マージする前に開始した場所に戻ります。

  3. 次回マージするときは、を使用しますgit merge --no-ff。これにより、Gitが必要としない場合でも、マージコミットが作成されます。

私はほとんどの場合、またはgit mergeのいずれかで使用し--ff-onlyます--no-ff

于 2013-02-21T09:13:00.110 に答える