For people like me used to use cvs for version control, when switching to Git, one of the thing bothers me a lot is file's origional timestamp. In case you want to checkout the files origional create/commit timestamp, here is my trick.

After checkout, run the script below, it will get the original create/commit timestamp from Git db.

 

#!/bin/bash -e

PATH=/usr/bin:/bin
unalias -a

get_file_rev() {
    git rev-list -n 1 HEAD "$1"
}

update_file_timestamp() {
  file_time=$(git show --pretty=format:%ai --abbrev-commit "$(get_file_rev "$1")" | head -n 1)
  touch -d "$file_time" "$1"
}

OLD_IFS=$IFS
IFS=$'\n'

for file in `git ls-files`
do
  if [ -f "$file" ] ; then
    update_file_timestamp "$file"
  fi
done

IFS=$OLD_IFS

git update-index --refresh