業務でコードレビューをしていただいた際に、特定の差分だけ取り消して前の状態に戻したい、、、と感じたので、今回やり方を調べてみました。
手順
1.log
コマンドでコミット履歴からコミットIDをメモする
git log
コマンドを使えば、コミット履歴が検索できるので、コミット履歴を調べてみます。
前提として、どのファイルを前の状態に戻したいかはわかっていると思うので、下のコマンドで変更履歴を見てみます。
git log -p <fileパス>
<fileパス>
は、.gitがあるルートディレクトリからの絶対パスを指定してください
GitHubでは、FilesChanged
からパスがコピーできるのでそのパスを指定してください
おそらく下のような履歴が出てくると思います。
commit aaaaaaaaaaaaaaaa
Author: MAOZ <maooz4426@gmail.com>
Date: Wed Jul 10 03:51:33 2024 +0900
コメント
diff --git a<fileパス> b<fileパス>
index f9ce3e1..2ad20fe 100644
--- a<fileパス>
+++ b<fileパス>
-
+ test
commit
の右に書いてあるaaaaaaa
にあたる部分がコミット履歴のコミットIDになるので、これをメモします。
上の場合、testというコードを消したい場合は、このコミット履歴より前のコミット履歴のハッシュ値を指定する必要があります。
2.checkout
コマンドで、特定のファイルのコミット履歴に戻す
コミットIDをメモしたところで、git checkout
を使って特定ファイルのコミットを戻します。
git checkout <コミットID> <fileパス>
上の例でいうと<コミットID>はaaaaaaaaaaaaaaaaにあたります。
ここまで終わると変更が特定の履歴に戻っていると思います。
3.本当に戻っているかstatus
コマンドで確認する
git status
コマンドを使えば、どのファイルが変更されたか見ることができます。
しかし、通常だとどのファイルが変更されたしか見ることは出来ず、ファイルの変更部分は見ることができません。
したがって、-vオブションで中身を表示させます。
git status -v
下のような感じで表示されると思います。
- test
+
ここで自分の戻したい履歴に戻っていたら終了です。
この記事がお役に立てたら嬉しいです。