Git - revert 命令 (commit 元に戻す)

git revertコマンドは、反映されたコミットの変更を削除して以前に戻します。コードはコミットが反映されていないように見えますが、revert commitは追加され、履歴を確認できます。

1. 特定のコミットをリバートする方法

git revert <commit id>は引数に渡されたコミットの修正を元に戻します。

以下のように commit が登録されており、ここで commit 971c858 (4th commit) が適用されなかったかのように、修正を元に戻そうとします。

$ git log
commit 5551f386aa1c22c26ea6aaf678e7cdbf2cded39b (HEAD -> master)
Author: JS <farfs.dev@gmail.com>
Date:   Sat Jun 26 13:19:30 2021 +0900

    5th commit

commit 971c858b160aebc1c6c47ae4713959d36d2e2a52
Author: JS <farfs.dev@gmail.com>
Date:   Sat Jun 26 13:19:00 2021 +0900

    4th commit

commit 10d7d0f6f52539a4e7a1867449b7d6fa023a2685
Author: JS <farfs.dev@gmail.com>
Date:   Fri Jun 25 21:03:38 2021 +0900

    third commit

git revert <commit id>を入力すると、この変更が適用されなかったようになります。

$ git revert 971c858b160aebc1c6c47ae4713959d36d2e2a52
Removing Second.java
[master 9f4586e] Revert "4th commit"
 2 files changed, 1 insertion(+), 1 deletion(-)
 delete mode 100644 Second.java

git logを見ると、Revert "4th commit"という名前でcommitが一つ追加されました。

このコミットは 4th commitの修正を削除しました。

$ git log
commit 9f4586eaf107d84a5b99c6cc538c4006e6e01285 (HEAD -> master)
Author: JS <farfs.dev@gmail.com>
Date:   Sat Jun 26 13:20:17 2021 +0900

    Revert "4th commit"

    This reverts commit 971c858b160aebc1c6c47ae4713959d36d2e2a52.

commit 5551f386aa1c22c26ea6aaf678e7cdbf2cded39b
Author: JS <farfs.dev@gmail.com>
Date:   Sat Jun 26 13:19:30 2021 +0900

    5th commit

commit 971c858b160aebc1c6c47ae4713959d36d2e2a52
Author: JS <farfs.dev@gmail.com>
Date:   Sat Jun 26 13:19:00 2021 +0900

    4th commit

commit 10d7d0f6f52539a4e7a1867449b7d6fa023a2685
Author: JS <farfs.dev@gmail.com>
Date:   Fri Jun 25 21:03:38 2021 +0900

    third commit

変更を見ると、Revert "4th commit"4th commitの修正を削除したcommitであることがわかります。

$ git show 971c858b160aebc1c6c47ae4713959d36d2e2a52
commit 971c858b160aebc1c6c47ae4713959d36d2e2a52
Author: JS <farfs.dev@gmail.com>
Date:   Sat Jun 26 13:19:00 2021 +0900

    4th commit

diff --git a/First.java b/First.java
index 9335791..a728477 100644
--- a/First.java
+++ b/First.java
@@ -14,7 +14,7 @@ import tech.thdev.media_projection_library.R
 internal class MediaProjectionAccessActivity : AppCompatActivity() {

     companion object {
-        private const val REQ_CODE_MEDIA_PROJECTION = 1000
+        private const val REQ_CODE_MEDIA_PROJECTION = 2000
$ git show 9f4586eaf107d84a5b99c6cc538c4006e6e01285
commit 9f4586eaf107d84a5b99c6cc538c4006e6e01285 (HEAD -> master)
Author: JS <farfs.dev@gmail.com>
Date:   Sat Jun 26 13:20:17 2021 +0900

    Revert "4th commit"

    This reverts commit 971c858b160aebc1c6c47ae4713959d36d2e2a52.

diff --git a/First.java b/First.java
index a728477..9335791 100644
--- a/First.java
+++ b/First.java
@@ -14,7 +14,7 @@ import tech.thdev.media_projection_library.R
 internal class MediaProjectionAccessActivity : AppCompatActivity() {

     companion object {
-        private const val REQ_CODE_MEDIA_PROJECTION = 2000
+        private const val REQ_CODE_MEDIA_PROJECTION = 1000

2. 複数のコミットをrevertする方法

複数のコミットをrevertするときは、 git revert [commit id] [commit id] ...のように、複数のcommit idを引数として渡してください。

$ git revert 5551f38 10d7d0f
Removing Third.java
[master 2260375] Revert "5th commit"
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 Third.java
[master 7ce9b41] Revert "third commit"
 1 file changed, 7 insertions(+)

ログを確認すると、revertされたコミットが適用されました。

$ git log
commit 7ce9b41b3f3c67025ba22eda75bccbdb094e754d (HEAD -> master)
Author: JS <farfs.dev@gmail.com>
Date:   Sat Jun 26 13:31:12 2021 +0900

   Revert "third commit"

   This reverts commit 10d7d0f6f52539a4e7a1867449b7d6fa023a2685.

commit 226037540ee8afb4304c0a7a39ae42de3e20f710
Author: JS <farfs.dev@gmail.com>
Date:   Sat Jun 26 13:31:10 2021 +0900

   Revert "5th commit"

   This reverts commit 5551f386aa1c22c26ea6aaf678e7cdbf2cded39b.

commit 9f4586eaf107d84a5b99c6cc538c4006e6e01285
Author: JS <farfs.dev@gmail.com>
Date:   Sat Jun 26 13:20:17 2021 +0900

   Revert "4th commit"

   This reverts commit 971c858b160aebc1c6c47ae4713959d36d2e2a52.

commit 5551f386aa1c22c26ea6aaf678e7cdbf2cded39b
Author: JS <farfs.dev@gmail.com>
Date:   Sat Jun 26 13:19:30 2021 +0900

   5th commit
codechachaCopyright ©2019 codechacha