git clone等で取得したファイルのタイムスタンプは、commitされた日時ではなく、そのgitコマンドを発行した日時になってしまいます。
なんかオプション指定でもすれば、commitした日時にできるのかな?と思ったのですが、簡単にはできないみたいで、gitのwikiにタイムスタンプを変更するperlスクリプトが書かれていました。
Setting the timestamps of the files to the commit timestamp of the commit which last touched them
https://git.wiki.kernel.org/index.php/ExampleScripts#Setting_the_timestamps_of_the_files_to_the_commit_timestamp_of_the_commit_which_last_touched_them
で、これと同様のことをshellスクリプトで行うものが下記サイトにありました。
コミット日付をタイムスタンプに復元したい
http://www.shigemk2.com/entry/git.timestamp
今まわりの人にMobaXTermを勧めていることもあって、MobaXTerm上でこれを使えるようにしたかったのですが、MobaXTermで使われているbusyboxだとdateの挙動の違いで動かなかったため、一部を修正して使えるようにしてみました。
git-set-file-times for busybox
https://github.com/stealthinu/git-set-file-times4busybox
for FILE in `git ls-files`; do TIME=`git log --pretty=format:%ci -n1 ${FILE} | sed -e "s/\([+-][0-9]\{2\}\)00$/\1:00/"` echo -e "${TIME}\t${FILE}" touch -t "${TIME}" ${FILE} done
busyboxのdateコマンドでは「+0900」という書式でのTZ指定はエラーになってしまうため「+09:00」という形に置き換えるようになっています。