1

Git セットアップでは、次の永続的なブランチがあります: - マスター | - 修正-xx - リリース - 開発

開発は、開発中のコードが進む場所です。「リリース」の準備がほぼ整うと、「マスター」にマージしてバージョンのタグを付ける前に、「リリース」にマージされます。古いバージョンでバグが見つかった場合は、別のブランチを作成して修正し、関連するバージョン タグを付けることができます。

いくつかの実験的なコードを誤ってリリースにマージしたという初心者の間違いを犯しました (これは開発に基づいていました)。その後、リリースが修正ブランチにマージされた直後に、同僚が同様の間違いを犯しました。したがって、リリースと修正は、ほぼ開発ブランチのコピーです。

これはコーディングエラーではなく、マージの完全な混乱だったので、できれば履歴からコミットを削除して、元に戻したいと思います。しかし、私は掘り下げてきましたが、リベースでこれを行う明確な方法を見つけることができません. リベースを実行して、削除したいコミットを一覧表示する方法が見つかりません。マスターでこの間違いを犯したのは簡単に思えます。

これから回復する最善の方法についての提案は大歓迎です。それ以来、これらはいくつかのコミットであるため、頭にはありません。

4

2 に答える 2

1

他のコミットと同様に、git reset を使用してマージ コミットを元に戻すことができます。たとえば、1 つ、2 つ、または 3 つのコミットを削除する場合、省略形はそれぞれgit reset HEAD~1,git reset HEAD~2になりgit reset HEAD~3ます。

これまでは、ローカルのコミット ツリーを編集していました。リモートサーバーを更新したい場合は、実行する必要がありますgit push --force(注意してください。forceフラグはより多くの問題の原因になる可能性があります)。

他の開発者が問題のあるコミットをプルした可能性があるため、リモート サーバーでブランチ ヘッドの参照を変更するため、その git クライアントがトラックを失った可能性があります。したがって、一貫性のあるコピーを再度作成する最も簡単な方法はgit clone、リポジトリに再度アクセスすることです。--forceこれが、フラグの使用を避けるべき理由です。もちろん、すべてを再度複製する必要を回避するための解決策は他にもたくさんあります。しかし、それらは説明が難しく、特定の状況に依存しています。

于 2012-07-06T04:34:56.917 に答える
0

私の答えはここにあると思います-マージによって行われた変更を元に戻します

リベースについては触れていません。おそらく、リベースはこの状況では問題外です。

于 2012-07-06T04:30:00.273 に答える