このバージョンの反復的な開発プロセスでは、多くの人が間違った提出時間を費やしていると思います(少なくともLiang Xuはこの経験を数回経験しています)。この場合、新人プログラマーはショックを受けて神経質になる可能性があります。上級プログラマーは少し微笑んで明るい額に触れ、静かにバージョンをロールバックします。
バージョンのロールバックでは、多くの場合2つのコマンドを使用します。
- gitリセット
- 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か月間余暇を過ごし、電子書籍を作成しました。面接であろうと自己改善であろうと、私はそれがあなたを助けると信じています!ディレクトリは次のとおりです。
みんなに無料でプレゼントして、いいね!
この電子書籍をより完璧にするために、何人かの友人が私に加わってくれることを願っています。
利得?古いアイアンに3ストライクのコンボを付けて、より多くの人がこの記事を読めるようにしてほしい
推奨読書: