Git は複数のコミットを元に戻する

Azhar Bashir Khan 2023年1月30日
  1. git revert を使用して Git の複数のコミットを元に戻す
  2. git reset を使用して Git の複数のコミットを元に戻す
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

関連記事 - Git Reset