ローカルでもリモートでも削除してしまったファイル復元方法
今日、すでにコミットもプッシュもしてしまったファイルをgitignoreしたくて色々ガチャガチャいじっていたら、ローカル上でもリモート上でもそのファイルがなくなってしまった。
なくなったファイルが、secrets.yml だったので「もうアプリ動かなくなっちゃう…」と心配していたが復元に成功したのでその方法について書きます。
ローカルでもリモートでも削除してしまったファイル復元方法
削除してしまったファイルを以下のコマンドを打って検索する。
すると削除した履歴とコミット番号が出てきてくれる。
$ git log --diff-filter=D --summary
commit e34c3b3bdb61d0780b37ea66eb0d57f1386a9f57
Author: haya <tw@gmail.com>
Date: Wed Oct 17 15:57:57 2018 +0900
delete
delete mode 100644 config/secrets.yml
commit 57dd2c7375fa1dc1401e638b6ed1dff5f68410f5
Author: haya <twi@gmail.com>
Date: Thu Sep 20 17:40:39 2018 +0900
modelレベルでバリデーション追加
delete mode 100644 config/locales/devise.en.yml
delete mode 100644 config/locales/en.yml
そして、
$ git checkout 復活させたいコミットの番号^ -- ディレクトリ名/ファイル名
を打ち込み、ファイルを復元。(コミット番号の後ろに^をつけるよう注意)
$ git checkout e34c3b3bdb61d0780b37ea66eb0d57f1386a9f57^ -- config/secrets.yml
これでローカル上にsecrets.yml が復元してくれました!!!!