どのようにgit revert
使用されますか?
これは重複した質問のように聞こえるかもしれませんが、人々が尋ねると、答えは多くの場合、git reset
次のように使用します。Git で SHA ハッシュによってコミットを元に戻しますか?。
そして、誰かが使い方を尋ねると、git reset
人々はgit revert
次のように答えます。Git - ロールバックの方法。
気がつくと、8 人の人物が現れ、それぞれ独自の方法で OP を救おうとしますが、そのすべてがあなたには理解できません。
それでは、概要に沿って、 の初心者向けガイドを書いてみましょうgit revert
。
シナリオ: マスターに 2 回コミットしましたが、問題があります。プッシュしたため、他の人に悪い変更が伝わりました。
元に戻したい。これは自分でコードで手動で元に戻せるものではなく、ウィザードやパッケージ マネージャーがさまざまな変更を行った場合、すべてを元の状態に戻したいだけなのです。
これがソース管理のすべてです。きっと簡単です。
わかりました。 を使用しますgit revert
が、どのように使用しますか?
を実行した後git revert
、何か他の操作を行う必要がありますか? revert による変更をコミットする必要がありますか、それとも revert によってリポジトリに直接コミットされるのでしょうか?
当然、もう一度プッシュする必要があり、おそらくチームに失敗したことを報告する必要があるでしょう。
ベストアンサー1
git revertは新しいコミットを作成します
git revert
既存のコミットの反対の新しいコミットを作成するだけです。
元に戻されたコミットが存在しなかったかのように、ファイルは同じ状態のままになります。たとえば、次の簡単な例を考えてみましょう。
$ cd /tmp/example
$ git init
Initialized empty Git repository in /tmp/example/.git/
$ echo "Initial text" > README.md
$ git add README.md
$ git commit -m "initial commit"
[master (root-commit) 3f7522e] initial commit
1 file changed, 1 insertion(+)
create mode 100644 README.md
$ echo "bad update" > README.md
$ git commit -am "bad update"
[master a1b9870] bad update
1 file changed, 1 insertion(+), 1 deletion(-)
この例では、コミット履歴に 2 つのコミットがあり、最後のコミットは間違いです。git revert を使用します。
$ git revert HEAD
[master 1db4eeb] Revert "bad update"
1 file changed, 1 insertion(+), 1 deletion(-)
ログには 3 つのコミットが含まれます。
$ git log --oneline
1db4eeb Revert "bad update"
a1b9870 bad update
3f7522e initial commit
したがって、何が起こったかについては一貫した履歴がありますが、ファイルは不正な更新が発生しなかったかのようです。
cat README.md
Initial text
元に戻すコミットが履歴のどこにあるかは関係ありません (上記の例では、最後のコミットが元に戻されますが、どのコミットも元に戻すことができます)。
最後の質問
その後何か他のことをしなければなりませんか?
A は単なるgit revert
別のコミットなので、たとえば、他のユーザーが変更をプル/フェッチ/マージできるようにリモートにプッシュすれば完了です。
元に戻した変更をコミットする必要がありますか、それとも元に戻すとリポジトリに直接コミットされますか?
git revert
コミットです- 単一のコミットを元に戻すことが目的であれば、追加の手順はありません。
当然、もう一度プッシュする必要があり、おそらくチームに失敗したことを報告する必要があるでしょう。
実際、リモートが不安定な状態にある場合は、修正を取得するためにプルする必要があること (コミットを元に戻す) をチームの他のメンバーに伝えるのが正しい方法です :)。