by shigemk2

当面は技術的なことしか書かない

コミット日付をタイムスタンプに復元したい

通常、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
  1. git ls-filesでgitで追跡しているファイルをリストアップ
  2. リストをforでぐるぐる回す
  3. git log --pretty=format:%ci -n1 $FILEでコミット時のタイムスタンプを取得する
  4. タイムスタンプとファイルをechoで出力
  5. タイムスタンプ用にdateで整形
  6. リストのファイルのタイムスタンプを修正

こんなかんじでしょうか。

git/コマンド - 初心者エンジニアの簡易メモ