ローカルでもリモートでも削除してしまったファイル復元方法

今日、すでにコミットもプッシュもしてしまったファイルを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 が復元してくれました!!!!