Gitでファイルを変更したあと、「やっぱりこの変更を取り消したいなー」と思うことはよくあります。そんな時に便利なのがgit revert
コマンドです。
この記事ではgit revert
コマンドについて、以下の内容をわかりやすく解説します。
git revert
とはgit revert
の使い方git revert
で特定のコミットを取り消す方法
git revertとは
git revert
は、過去の特定のコミットを「取り消す」コマンドです。
「取り消す」といっても、元のコミット自体を削除するわけではなく、そのコミット内容の「反対の内容」を新しいコミットとして追加します。
そのため、取り消した変更内容は履歴に残り、いつどの変更が取り消されたかを追跡できるのが特徴です。
git revertの使い方
git revert
の基本構文を以下に示します。
git revert <コミットID>
<コミットID>
の部分には、取り消したいコミットのIDを指定します。これにより、指定したコミットの内容が「反対の内容」が新しいコミットに追加されます。
git revertで特定のコミットを取り消す方法
では実際にgit revert
コマンドを用いて特定のコミットを取り消してみましょう。一例として、次のようなコミット履歴があるとします。
$ git log
commit 63bc2425083f4fb6635054a9526c474b433bfb4d (HEAD -> main)
Author: user01 <user01@example.com>
Date: Thu Nov 7 15:14:16 2024 +0900
Commit C
commit c355097b1a7b3b553b0732a6d8df995bf328c4a5
Author: user01 <user01@example.com>
Date: Thu Nov 7 15:14:08 2024 +0900
Commit B
commit 1317f3fd0e1eb14e4d6a7f77b814953480ab130e
Author: user01 <user01@example.com>
Date: Thu Nov 7 15:13:55 2024 +0900
Commit A
今回は、git revert
でcommit B
のコミットを取り消してみましょう。
手順を以下に示します。
特定のコミットを取り消す手順
git revert
コマンドを実行する- コミットメッセージを変更する
では上記の手順について順番に説明します。
git revertコマンドを実行する
まず、Commit BのコミットID c355097b1a7b3b553b0732a6d8df995bf328c4a5
を指定して git revert
コマンドを実行します。
git revert c355097b1a7b3b553b0732a6d8df995bf328c4a5
コミットメッセージを変更する
git revert
コマンドを実行すると、設定されているテキストエディタが開き、新しいコミットメッセージを確認または変更する画面が表示されます(デフォルトではvim
が開きますが、設定によっては他のエディタが開くこともあります)。
Revert "Commit B"
This reverts commit c355097b1a7b3b553b0732a6d8df995bf328c4a5.
# 以下略
- コミットメッセージを変更しない場合
- :wqを入力した後、Enterキーを押してテキストエディタを閉じます。
- コミットメッセージを変更する場合
- iキーを押してインサートモードに切り替えます。コミットメッセージを変更したら escキーでインサートモードを終了し、:wqを入力した後、Enterキーを押してテキストエディタを閉じます。
以上の手順でcommit B
のコミットを取り消すことができます。
【補足】git logコマンドでコミットが取り消されたかを確認する
最後に、 git log
コマンドを実行してcommit B
のコミットが取り消されているかを確認してみましょう。
$ git log
commit 2192dc0e8e859f89f1b6ecc0fec4646dc95432ad (HEAD -> main)
Author: user01 <user01@example.com>
Date: Thu Nov 7 15:14:32 2024 +0900
Revert "Commit B"
This reverts commit c355097b1a7b3b553b0732a6d8df995bf328c4a5.
commit 63bc2425083f4fb6635054a9526c474b433bfb4d
Author: user01 <user01@example.com>
Date: Thu Nov 7 15:14:16 2024 +0900
Commit C
commit c355097b1a7b3b553b0732a6d8df995bf328c4a5
Author: user01 <user01@example.com>
Date: Thu Nov 7 15:14:08 2024 +0900
Commit B
commit 1317f3fd0e1eb14e4d6a7f77b814953480ab130e
Author: user01 <user01@example.com>
Date: Thu Nov 7 15:13:55 2024 +0900
Commit A
確認すると、commit B
のコミットを取り消すためのRevert "Commit B"
という新しいコミットが作成されていることが分かります。実際にファイルを確認するとcommit B
で変更した内容が取り消されています。
補足
git revert
コマンドはデフォルトでは、--edit
(または-e
)オプションが有効になっているため、コミットメッセージが編集可能になっています。そのため、以下のコマンドはすべて同じ動作をします。
git revert <commit>
git revert <commit> --edit
git revert <commit> -e
--no-edit
オプションを追加すると、テキストエディタを開かずにデフォルトメッセージで取り消しコミットが作成されます。
git revert <commit> --no-edit
本記事のまとめ
この記事ではgit revert
コマンドについて、以下の内容を説明しました。
git revert
とは- 過去の特定のコミットを「取り消す」コマンド。
- 元のコミットを削除するのではなく、その反対の内容を新しいコミットとして追加する。
- 履歴に取り消しの記録が残るため、変更の追跡が可能。
git revert
の基本構文git revert <コミットID>
<コミットID>
は取り消したいコミットのIDを指定する。
git revert
のオプション- デフォルトで
--edit
(または-e
)オプションが有効になっているため、コミットメッセージが編集可能になっている。 --no-edit
オプションを追加すると、テキストエディタを開かずにデフォルトメッセージで取り消しコミットが作成される。
- デフォルトで
お読み頂きありがとうございました。