1

状況

私たちはウェブサイトの特別なプロモーション バージョンを作成し、経営陣はそれを公開するように依頼しました。通常のサイト (わかりやすくするためにコミット 0 と呼びます) から始めて、プロモ バージョンを作成するのに 5 つのコミットが必要であり、それらのコミットはすべてマスターで行われたとします (つまり、作業中のプロモ サイトはコミット 5 です)。

ここで、緊急の電話がかかってきました。最初に提示されたプロモーションの日付が間違っています。プロモーションは来週まで開始されないはずです。すぐに元のサイトにロールバックしてください。

次のことを前提とします

  1. オリジンには、受信したコミットをライブでプッシュする post-receive フックのセットアップがあります。
  2. 今すぐコミット 0 にロールバックするサイトが必要です。
  3. 約 1 週間で、コミット 5 からの変更が再び必要になります。
  4. 現在から来週にかけて、いくつかのバグ修正が追加される予定です。

質問

この問題を解決するには、どの一連の git コマンドが適切ですか?

これはうまくいくと思いますが、最適ではないようです。

  1. git branch promoプロモーション作業を後で保存するため
  2. git reset --hard 0通常のサイトにロールバックする
  3. git push -f origin master通常のサイトを再びライブにプッシュします。「強制」フラグが必要です。そうしないと、git はオリジンがローカル ブランチより先にあると文句を言います。
  4. マスターで、コミット 0 の上にいくつかのバグ コミットを行い、その週にコミット 6 と 7 を作成します。
  5. git merge promoそしてgit push origin master来週が来たら、実際にサイトのプロモーション バージョンを再び公開する時が来ました。

それで、これを行うより良い方法はありますか?リセットの代わりにリバートを使用する必要がありますか? 厄介な-f強制フラグを回避する方法はありますか? 他のコメント?

4

2 に答える 2

2

原則として、私は歴史を書き換えるのが好きではありません。変化は常に前進します。私はこれをします。

# Keep a copy of the promo state
git branch promo

# Undo the changes
git revert 0
git push

「プロモーション」ブランチで作業を行います。リベース、「マスター」からのマージ、好きなことを行うことができます。

次に、本当に時間が来たら:

git merge promo
git push
于 2013-10-22T08:37:19.530 に答える