作業ツリーから削除してしまったずっと前のファイルを取り戻す

Pocket

コミットしていく中でいつの間にかファイルが消滅してて焦った。
大量にコミットしてるからいつのコミットで消滅したのかもわからない。
パスだけは分かってる。
単純にいつもファイルのログを確認してる方法でやってみた。

$ git log path/to/file.txt
fatal: ambiguous argument 'bin/SL002.bat': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

失敗したから余計に焦る、エラーが起きたことしか頭になくてgitからの助言が目に入らない。
日本語で検索してもコミットする前に消してしまったファイルの復元方法や、
特定のコミットのファイルを取り戻す方法しか書いてない。
仕方ないから英語で検索したら

github – Find when a file was deleted in Git – Stack Overflow

なページがヒットした。--をつけなさいって書いてあります。
よくよく確認したら最初のエラーメッセージの中にもそう書いてありました。
んで、再トライ。

$ git log -- path/to/file.txt
commit 91e70f1397fbdae1232df1c5580394541aad27ca
Author: Wataru Noguchi 
Date:   Mon Sep 3 15:16:51 2012 +0900

    BBBBBBB

commit ba7e35f4a2ede83357c331abc1c2fa13a5a00db7
Author: Wataru Noguchi 
Date:   Sun Sep 2 03:52:45 2012 +0900

    AAAAAAA

最後のリビジョンが見つかった。
--statをつけて詳細を確認してみる。

$ git log --stat 91e70f
path/to/file.txt                            | 117 ----------------------------

思いっきり削除してます。
なので、手前のコミットハッシュを指定してファイルを救出しました。

$ git checkout -f ba7e35f path/to/file.txt

いやー焦った。

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください