【git】過去コミットの一部ファイルのみ修正する方法

  • 以下のようなコミット履歴
  • e5d9f7a4b3c2a1e9f8d7c6b5a4e3d2f1e0d9c8b7a6 で2ファイル修正
  • file1.txtだけ元に戻したい
1
2
3
4
5
6
7
HEAD
|
a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c
|
e5d9f7a4b3c2a1e9f8d7c6b5a4e3d2f1e0d9c8b7a6
change file1.txt
change file2.txt

方法

1
git checkout e5d9f7a4b3c2a1e9f8d7c6b5a4e3d2f1e0d9c8b7a6^ file1.txt

解説

ハッシュ値の後にキャレット(^)をつけているのは、1つ前のコミット(変更前のコミット)のファイルをチェックアウトするため