バージョンロールバックを適切に実行する方法

このバージョンの反復的な開発プロセスでは、多くの人が間違った提出時間を費やしていると思います(少なくともLiang Xuはこの経験を数回経験しています)。この場合、新人プログラマーはショックを受けて神経質になる可能性があります。上級プログラマーは少し微笑んで明るい額に触れ、静かにバージョンをロールバックします。

バージョンのロールバックでは、多くの場合2つのコマンドを使用します。

  1. gitリセット
  2. git revert

これら2つのコマンドの違いは何ですか?心配しないで、後で詳しく紹介します。

gitリセット

私たちのシステムに次の提出がある場合:

それらの中で:AとBは通常の提出物であり、CとDは誤った提出物です。ここで、CとDをロールバックします。このとき、HEADポインターはD送信(5lk4er)を指します。目標を達成するには、HEADポインターをBサブミッション(a0fvf8)に移動するだけです。

gitベースの友達がいる限り、私はgit resetコマンドを考えます完全なコマンドは次のとおりです。

git reset --hard a0fvf8

コマンドが実行されると、以下に示すように、HEADポインターがBコミットに移動します。

この時点で、リモートウェアハウスのHEADポインターは変更されず、D送信のままです。したがって、git pushコマンドを直接使用する場合、リモートリポジトリに変更をプッシュすることはできません。この時点で-f、リモートリポジトリに強制的にプッシュされる送信オプションのみ

git push -f

このメソッドを使用してコードをロールバックすることの欠点は明らかです。つまり、HEADポインターが元に戻り、後続のコミット情報が失われます。将来、CとDの素晴らしいアイデアが突然発見された場合、長い歴史の川から消え去ってしまいます。

さらに、一部の企業(Liangxuの企業など)は、上記と同じ理由で、git resetコマンドを使用してコードをロールバックすることを明示的に禁止しています。したがって、コードをロールバックし、間違った送信を保存できるコマンドを見つける必要があります。この時点で、git revertコマンドは便利です。

git revert

git revertの役割は、リバースを実行して新しいバージョンを作成することです。このバージョンのコンテンツは、ロールバックするターゲットバージョンと同じですが、HEADポインターはターゲットバージョンではなく、この新しく生成されたバージョンを指します。

git revertコマンドを使用して上記の例を実装するには、まずDを元に戻し、次にCを元に戻します(ロールバックする必要があるコミットが複数ある場合は、新しいものから古いものに戻す必要があります)。

git revert 5lk4er
git revert 76sdeb

ここに2つの新しいコミットが生成されます。以下に示すように、D 'とC'です。

元に戻す必要のある提出物は2つだけあり、1つずつ元に戻すことができます。しかし、何十もある場合はどうでしょうか?1つ1つは明らかに非効率的でエラーが発生しやすくなります。バッチロールバックには次のメソッドを使用できます。

git revert OLDER_COMMIT^..NEWER_COMMIT

現時点では、誤った提出物CとDは引き続き保持され、将来、ポットをダンプするときに追跡されます。さらに、この操作の場合、HEADポインターが後方に移動git pushし、リモートプッシュウェアハウスへのコマンドとして使用できますそして、このアプローチはまさに企業が奨励するものです。

もっと難しい例を挙げましょう。

3つの提出があると仮定しますが、残念ながら、間違った提出が偶然に発生しています。以下に示すように:

現時点では、git resetコマンドを直接使用して、HEADポインターをA送信にリセットするだけでは十分ではありません。C送信は正しく、保持する必要があるためです。BおよびCは最初にすべてのロールバックをバッチ送信し、次にcherry-pickコマンドを使用してCを再生成し、新しい送信C ''を送信します。これにより、Bはロールバックの必要性をコミットします。完全なプロセスは次のとおりです。

最後に、最近、多くの友人からLinuxラーニングロードマップの提供を求められたため、私の経験に基づいて、1か月間余暇を過ごし、電子書籍を作成しました。面接であろうと自己改善であろうと、私はそれがあなたを助けると信じています!ディレクトリは次のとおりです。

みんなに無料でプレゼントして、いいね!

電子ブック| Linux開発ラーニングロードマップ

この電子書籍をより完璧にするために、何人かの友人が私に加わってくれることを願っています。

利得?古いアイアンに3ストライクのコンボを付けて、より多くの人がこの記事を読めるようにしてほしい

推奨読書:

おすすめ

転載: blog.csdn.net/yychuyu/article/details/108285676