0
1

gitで特定のファイルの変更差分を取り消す方法

Posted at

業務でコードレビューをしていただいた際に、特定の差分だけ取り消して前の状態に戻したい、、、と感じたので、今回やり方を調べてみました。

手順

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
+

ここで自分の戻したい履歴に戻っていたら終了です。
この記事がお役に立てたら嬉しいです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1