それをロールバックGitのエレガントなバージョンを使用するには?

入門

反復的な開発プロセスのバージョンでは、私はエラーが(少なくとも良い多くは、いくつかのような経験を持っていた)とき、多くの人が提出されていると信じています。この場合は、初心者プログラマはびっくり虎を駆動かもしれないが、テンションは途方に暮れていました。上級プログラマは、バージョンロールバックのために、その後静かに、光沢のある額に触れ、笑顔になります。

ロールバックのバージョンについては、我々は、多くの場合、2つの使用コマンド

  1. gitのリセット
  2. Gitの元に戻します

これら二つのそのコマンドにはどのような違いを生むのでしょうか?後に、私たちの詳細心配しないでください。

gitのリセット

次のように我々のシステムは、現在、いくつか提出されている場合:

それをロールバックGitのエレガントなバージョンを使用するには? それをロールバックGitのエレガントなバージョンを使用するには?
どのようにエレガントなGitのバージョンのロールバックのために?

前記C及びDは日付であるが、AおよびBは、正常に送信されます。今、私たちは、CとDに戻りたいです この時点で、HEADポインタは、D(5lk4er)を提出します。私達はちょうど自分の目標を達成することができ、B HEADの提出(a0fvf8)へのポインタを移動する必要があります。

そこにいる限りはgitベースの友人はgitのリセットコマンドを思うだろう。完全なコマンドは次のよう:

git reset --hard a0fvf8

実行するコマンドの後、先頭ポインタは、次のように示され、次の提出Bに移動します。

それをロールバックGitのエレガントなバージョンを使用するには? それをロールバックGitのエレガントなバージョンを使用するには?
どのようにエレガントなGitのバージョンのロールバックのために?

そして、この時間は、HEADポインタのリモートリポジトリは、Dが提出され、まだ上で、変更されません。だから、直接使用のgit pushコマンド場合は、リモートリポジトリに変更をプッシュすることができません。この時点で、あなただけのリモートリポジトリにプッシュを強制的に-fオプションを使用して送信することができます。

git push -f

情報の提出が失われる後のように、このようにして、HEADポインタを作るフォールバックコード明白な欠点は、戻されます。あなたが突然、将来的にそれを見つけた場合は、CおよびDは、どのような素晴らしいアイデアですが、彼らはすでに歴史の長い川で姿を消していました。

また、(例えば徐梁の会社のような)一部の企業では、コード、上記と同じ理由をロールバックするために使用のgit resetコマンドを禁止しました。そこで、我々はどちらか、コマンドを見つけるコードをロールバックし、提出し、問題を維持する必要があります。このとき、のgit revertコマンドは便利です。

Gitの元に戻します

gitのは、抗新バージョン、コンテンツのこのバージョンを作成して行うことで役割を元に戻すと、私たちは同じのターゲットバージョンに戻るには後退したが、HEADポインタは、新世代のバージョンではなく、対象バージョンへのポインタです。

上記の例を達成するためのコマンドを元に戻すにgitを使用して、我々はこれを行うことができます:最初のDを元に戻し、その後、Cを元に戻す(最新差し戻しにより必要であれば、複数の応募があり、ロールバックが必要です):

git revert 5lk4er
git revert 76sdeb

D「およびC」を、次のように示す:ここでは、2つの新しい、提出が生成されます。

それをロールバックGitのエレガントなバージョンを使用するには? それをロールバックGitのエレガントなバージョンを使用するには?
どのようにエレガントなGitのバージョンのロールバックのために?

提出の2つだけがあり、我々は戻って一つ一つをロールバックすることができ、元に戻す必要があります。しかし、それの数十がありますか?一つのフォールバック確かに非効率的で、エラーが発生しやすいです。私たちは、次の方法のバッチロールバックを使用することができます。

git revert OLDER_COMMIT^..NEWER_COMMIT

この場合、エラーがCとDが残っている、と未来の時間も続くに従って鍋を投げられる提出します。さらに、この操作ヘッド・ポインタは、次に後退され、直接リモートコマンドGitのプッシュ倉庫にプッシュすることができます。そして、このアプローチは、それが企業によって奨励されています。

別のものを与えるために、私たちの例としては、もう少し難しいです。

3件の提出が、非常に残念なことがある場合は、それが途中で提出するだけで間違っています。次のように示します:

それをロールバックGitのエレガントなバージョンを使用するには? それをロールバックGitのエレガントなバージョンを使用するには?
どのようにエレガントなGitのバージョンのロールバックのために?

明確ではないとしてCを提出する権利があるとして、この場合には、直接使用するgitのリセットコマンドは、AへのHEADポインタをリセットし、あなたが保持する必要があります。BとCは、最初にそのようにBがロールバックニーズをコミット達成するために、Cは新しい提出C「」を提出し、再生成するために、チェリーピックコマンドを使用し、すべてのロールバックを提出提出してください。次のように完全なプロセスは以下のとおりです。

それをロールバックGitのエレガントなバージョンを使用するには? それをロールバックGitのエレガントなバージョンを使用するには?
どのようにエレガントなGitのバージョンのロールバックのために?

上記の比較で見つけることができ、Gitはリセットされ、gitのは、最大の違いは、gitのリセットが提出の背中を失うことになる、ということです元に戻す、とGitはカウンターやっによる新提出を再作成するために戻り、元の提出を保持します。事業では、Gitのrevertコマンドは、gitのリセットコマンドを実行しようとすることはできません使用するようにしてください。

おすすめ

転載: www.cnblogs.com/linuxprobe-sarah/p/11259147.html