状況
私たちはウェブサイトの特別なプロモーション バージョンを作成し、経営陣はそれを公開するように依頼しました。通常のサイト (わかりやすくするためにコミット 0 と呼びます) から始めて、プロモ バージョンを作成するのに 5 つのコミットが必要であり、それらのコミットはすべてマスターで行われたとします (つまり、作業中のプロモ サイトはコミット 5 です)。
ここで、緊急の電話がかかってきました。最初に提示されたプロモーションの日付が間違っています。プロモーションは来週まで開始されないはずです。すぐに元のサイトにロールバックしてください。
次のことを前提とします
- オリジンには、受信したコミットをライブでプッシュする post-receive フックのセットアップがあります。
- 今すぐコミット 0 にロールバックするサイトが必要です。
- 約 1 週間で、コミット 5 からの変更が再び必要になります。
- 現在から来週にかけて、いくつかのバグ修正が追加される予定です。
質問
この問題を解決するには、どの一連の git コマンドが適切ですか?
これはうまくいくと思いますが、最適ではないようです。
git branch promo
プロモーション作業を後で保存するためgit reset --hard 0
通常のサイトにロールバックするgit push -f origin master
通常のサイトを再びライブにプッシュします。「強制」フラグが必要です。そうしないと、git はオリジンがローカル ブランチより先にあると文句を言います。- マスターで、コミット 0 の上にいくつかのバグ コミットを行い、その週にコミット 6 と 7 を作成します。
git merge promo
そしてgit push origin master
来週が来たら、実際にサイトのプロモーション バージョンを再び公開する時が来ました。
それで、これを行うより良い方法はありますか?リセットの代わりにリバートを使用する必要がありますか? 厄介な-f
強制フラグを回避する方法はありますか? 他のコメント?