通常、git cloneしたリポジトリのファイルのタイムスタンプは、cloneした日付である。
でもファイルのタイムスタンプを実際に編集した時、せめてコミットしたときまで復元したいときってあるよね。あると思う。
実際に見てみると、ああ^~って感じのシェル芸でした。
for FILE in `git ls-files`; do TIME=`git log --pretty=format:%ci -n1 $FILE` echo $TIME'\t'$FILE STAMP=`date -d "$TIME" +"%y%m%d%H%M.%S"` touch -t $STAMP $FILE done
- git ls-filesでgitで追跡しているファイルをリストアップ
- リストをforでぐるぐる回す
- git log --pretty=format:%ci -n1 $FILEでコミット時のタイムスタンプを取得する
- タイムスタンプとファイルをechoで出力
- タイムスタンプ用にdateで整形
- リストのファイルのタイムスタンプを修正
こんなかんじでしょうか。