いつ消したか忘れたファイルを元に戻す
コミットログを毎回「update」とかにしてしまったために git log してもいつ消したかわからなくなってしまった人 (自分) へ。
git log ではなく、git log --name-status を使えばいい感じになります。
(git log で変更・追加されたファイルを表示する - @yuumi3のお仕事日記)
git log の場合
commit 851a44262fbe9c1ead56a04e8d05c07f2c6afc13 Author: milk1000cc <info@example.com> Date: Thu Sep 4 08:55:15 2008 +0900 update commit c556a32b024f7ec4c7dcc1e85c5ba68a64cb9346 Author: milk1000cc <info@example.com> Date: Thu Sep 4 08:55:05 2008 +0900 update commit 793ed99ef6f5a0822b00308376260937741634cd Author: milk1000cc <info@example.com> Date: Tue Sep 2 16:08:25 2008 +0900 update
どれも同じに見える..
git log --name-status の場合
commit 851a44262fbe9c1ead56a04e8d05c07f2c6afc13 Author: milk1000cc <info@example.com> Date: Thu Sep 4 08:55:15 2008 +0900 update M hoge.txt M hogehoge.txt M hogehogehogehoge.txt commit c556a32b024f7ec4c7dcc1e85c5ba68a64cb9346 Author: milk1000cc <info@example.com> Date: Thu Sep 4 08:55:05 2008 +0900 update D kesuyo.txt commit 793ed99ef6f5a0822b00308376260937741634cd Author: milk1000cc <info@example.com> Date: Tue Sep 2 16:08:25 2008 +0900 update M kesuyo.txt
いつ消したかが、わかる!
つまり、元に戻したいファイルが D になってるリビジョンの 1 つ前のリビジョンをとってくればいいわけです。
ここから先は、もう少しいいやり方があればいいんですが、自分は
git checkout 793ed99ef6f5a0822b00308376260937741634cd
して、ディレクトリの状態を元に戻し、復活させたいファイルを待避させ、
git checkout master
で最新状態に戻して、待避させていたファイルを git 管理下に移動させました。
まあ、ソースコードの管理をする場合は、きちんとコミットログを書いて、こまめにコミットしましょうという話ですね。
今回の場合は、ソースコードじゃなくて書類フォルダを git で管理していて、コミットログとか面倒で...