175

どのようにgit revert使用されますか?

これは重複した質問のように聞こえるかもしれませんが、人々が尋ねると、多くの場合、Revert to a commit by a SHA hash in Git?git resetに従って使用します。

次に、誰かが使用方法を尋ねると、 Gitに従ってgit reset使用する必要があると答えます-ロールバックする方法git revert

あなたがそれを知る前に、OPのお尻を救うための独自の方法で8人の異なる人々が登場しました。

それでは、ブリーフを貼り付けて、ダミーガイドを書いてみましょうgit revert.

シナリオ: master に 2 回コミットしましたが、それは悪いことです。あなたはプッシュし、他の人はあなたの悪い変化を持っています.

あなたはそれを元に戻したいです。ウィザードやパッケージマネージャーがあちこちで大量のものを変更したとしましょう。元の状態にすべて戻したいだけです。

これがソース管理のすべてです。きっと簡単です。

さて、あなたは使うつもりですgit revertが、どうやって?

そして、走ったgit revert後、何か他のことをしなければなりませんか?行った変更をコミットする必要がありますか、それともリポジトリに直接コミットする必要がありますか??

明らかに、もう一度プッシュする必要があり、おそらくチームにボールアップを発表する必要があります.

4

6 に答える 6

56

次のように git revert を使用します。

git revert <insert bad commit hash here>

git revertロールバックされた変更で新しいコミットを作成します。git reset新しいコミットを作成する代わりに、git 履歴を消去します。

その後の手順は、他のコミットと同じです。

于 2013-09-26T15:32:50.190 に答える
26

reset同じ会話でとが頻繁に出てくる理由revertは、異なるバージョン管理システムがそれらを異なる意味で使用するためです。

特に、コミットされていないファイルへの変更を破棄したい SVN や P4 に慣れている人はrevert、実際にreset.

同様に、revert他の VCS で同等のものが呼び出されるか、似たようなものになることがよくありますがrollback、「ロールバック」は「最後のいくつかのコミットを完全に破棄したい」という意味にもなり、これは. そのため、自分が何をしたいのかはわかっていても、そのためにどのコマンドを使用すればよいのかが明確でない場合、多くの混乱が生じます。resetrevert

復帰に関する実際の質問については...

さて、あなたは git revert を使うつもりですが、どうやって?

git revert first-bad-commit^..last-bad-commit

編集: ^first-bad-commit の文字に注意してください。first-bad-commit元に戻す範囲には開始コミットが含まれていないため、これは の親を参照しています。

そして、 git revert を実行した後、何か他のことをする必要がありますか? 行った変更をコミットする必要がありますか、それともリポジトリに直接コミットする必要がありますか??

デフォルトでgit revertは、コミット メッセージの入力を求めるプロンプトが表示され、結果がコミットされます。これはオーバーライドできます。manページを引用します:

- 編集

このオプションを使用すると、git revert を使用して、復帰をコミットする前にコミット メッセージを編集できます。これは、端末からコマンドを実行する場合のデフォルトです。

--コミットしない

通常、このコマンドは、元に戻されたコミットを示すコミット ログ メッセージを含むいくつかのコミットを自動的に作成します。このフラグは、名前付きコミットを作業ツリーとインデックスに戻すために必要な変更を適用しますが、コミットは行いません。さらに、このオプションを使用する場合、インデックスは HEAD コミットと一致する必要はありません。元に戻すは、インデックスの開始状態に対して行われます。

これは、複数のコミットの効果を連続してインデックスに戻す場合に役立ちます。

特に、デフォルトでは、元に戻すコミットごとに新しいコミットが作成されます。を使用revert --no-commitして、個々のコミットとしてそれらの変更をコミットせずにすべてを元に戻す変更を作成し、その後、自由にコミットできます。

于 2013-09-26T15:33:34.160 に答える
1

Infographic showing how git revert is essentially an inversed git cherry-pick, undoing stuff by rolling forward; the target commit being reverted stays in history!

Use git revert when you cannot rewrite the entire history but still want to undo an earlier commit completely. As with most git commands, revert is performed locally, and hence, the resulting commit needs to be pushed in order to be shared with the rest of your team.

Infographic showing how

于 2021-09-22T11:24:47.410 に答える