Git は複数のコミットを元に戻する
このチュートリアルでは、Git で複数のコミットを元に戻す方法について説明します。
Git では、いくつかの機能開発のために多くのコミットを行ったか、いくつかのバグ修正をコミットした可能性があります。
私たちは今、この仕事をチャックすることに決めるかもしれません。したがって、これらの変更が行われる前の状態にリポジトリを戻すには、行われた複数のコミットを元に戻す必要があります。
git revert
コマンドを使用して、Git で複数のコミットを元に戻すことができます。
複数のコミットを元に戻す別の方法は、git reset
コマンドを使用することです。
次に、両方を例を挙げて説明します。
git revert
を使用して Git の複数のコミットを元に戻す
いくつかのバグ修正のために複数のコミットを行ったとします。
これらのコミットは、次のように Git のログで確認できます。
$ git log --oneline
17b787d bug3 fixed
1fefb57 bug2 fixed
8b3560b bug1 fixed
784065c feature1 developed
...
ここで、これらのバグ修正を取り除いて、リポジトリを bug1 fixed
状態の前の状態に戻すことにしました。
したがって、--no-commit
オプションを指定して git revert
コマンドを使用できます。コマンドの構文は git revert --no-commit <commit>
です。
したがって、行われたバグ修正の 3つのコミットを元に戻すには、次のようにする必要があります。
$ git revert --no-commit 17b787d784065c
$ git revert --no-commit 1fefb57
$ git revert --no-commit 8b3560b
したがって、Git のリポジトリは、bug1 fixed
をコミットする前の状態になります。
コミットの sha1
名を使用して、各コミットを元に戻しました。
次のように、Git リポジトリで作業ツリーのこの状態をコミットする必要があります。
$ git commit -m "the fixes for bugs 1 2 3 reverted"
git reset
を使用して Git の複数のコミットを元に戻す
リポジトリにいくつかのマージコミットがあるとします。その場合、git revert
を使用した上記の解決策は機能しません。
このような場合は、git reset
コマンドを使用する必要があります。
したがって、Git で git reset
を使用して複数のコミットを元に戻すには、次のようにする必要があります。
$ git reset --hard 784065c
$ git reset --soft ORIG_HEAD
$ git commit
ここでは、git reset
コマンドを使って、コミット履歴の最初のバグ修正の直前のコミット、すなわち 784065c feature1 developed
にリポジトリを戻しました。
したがって、これはいくつかのマージコミットがある場合でも機能します。
関連記事 - Git Commit
- 1つのコマンドで Git Add と Git Commit
- 1つのコマンドで git add、git commit、および git push
- 1つのファイルを除くすべてのファイルをコミット用に追加
- Git で現在のコミットを取得する
- Git で追跡されていないファイルをコミットするさまざまな方法
- Git で特定のコミットを変更する