有没有一个快速的git命令来查看旧版本的文件?
在git中是否有一个命令(转储到标准输出,或$PAGER或$EDITOR )特定版本的特定文件? 
 你可以使用git show : 
 $ git show REVISION:path/to/file 
 例如,要显示文件src/main.c的第4次提交,请使用: 
 $ git show HEAD~4:src/main.c 
 请注意,path是从存储库的根目录开始的,除非以./或../开头以指示相对path。 有关更多信息,请查看git-show的手册页。 
按date做这件事情是这样的:
 git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt 
 请注意, HEAD@{2013-02-25}表示“此仓库中使用reflog ”的“ 2013AD-25AD ”,而不是“2013-02-25在此历史logging中的最后一次提交”。 
如果你喜欢GUI,你可以使用gitk:
- 
开始与gitk: gitk /path/to/file
- 
在屏幕顶部select修订版本,例如按说明或date。 默认情况下,屏幕的下半部分显示该版本的差异(对应于“补丁”单选button)。 
- 
要查看选定修订的文件 - 点击“树”单选button。 这将显示该修订版本的文件树的根目录。
- 深入到你的文件。
 
 您还可以使用git show命令指定commit hash (通常也称为commit ID )。 
简而言之
 git show <commitHash>:/path/to/file 
一步步
-  用git log /path/to/file显示给定文件的所有更改的git log /path/to/file
-  在显示的更改列表中,它显示commit hash,如commit 06c98...(06c98 …是提交散列)
-  复制commit hash
-  运行命令git show <commitHash>:/path/to/file使用步骤3的commit hash和步骤1的path/to/file。
  注意:在指定相对path时添加./似乎很重要, git show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html 。 
除了Jim Hunziker的回答之外,
您可以从修订版本导出文件,
 git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt > old_fileInCurrentDirectory.txt 
希望这可以帮助 :)
  git log -p会显示提交日志,还会显示每个提交(除了合并提交)的差异。 然后你可以按/ ,input文件名,然后按enter 。 按n或p键进入下一个/上一个发生。 这样你就不会只看到文件的变化,而且还看到提交信息。 
您可以使用这样的脚本将文件的所有版本转储到单独的文件中:
例如
 git_dump_all_versions_of_a_file.sh path/to/somefile.txt 
 它会在与原始文件相同的文件夹中生成一堆文件,命名如下,最新的更改后缀为“1”。 请注意,它也会转储以.logmsg结尾的另一个文件,其中包含提交的日志消息。 
 path/to/somefile.txt.1.0dea419 path/to/somefile.txt.1.0dea419.logmsg path/to/somefile.txt.2.cdea8s9 path/to/somefile.txt.2.cdea8s9.logmsg path/to/somefile.txt.3.fdsf2d path/to/somefile.txt.3.fdsf2d.logmsg etc... 
git_dump_all_versions_of_a_file.sh
 ROOT_FOLDER=$(git_root) CURR_DIR=$(pwd) if [ "$ROOT_FOLDER" != "$CURR_DIR" ] then echo "Switch to the root of the repo and try again. Should be in $ROOT_FOLDER" exit fi function choose_col { COL=$1 if [ -z "$2" ] then OPTS= else OPTS="-F\\${2}" fi awk $OPTS -v col="$COL" '{print $col}' } cd $ROOT_FOLDER FILENAME=$* HASHES=$(git_log_short $FILENAME | choose_col 1) INDEX=1 for HASH in $HASHES do INDEX_OUT=$(printf %03d $INDEX) OUT_FILENAME="$FILENAME.$INDEX_OUT.$HASH" OUT_LOG_FILENAME="$FILENAME.$INDEX_OUT.$HASH.logmsg" echo "saving version $INDEX to file $OUT_FILENAME for hash:$HASH" echo "*******************************************************" >> $OUT_LOG_FILENAME git_log_message_for_commit $HASH >> $OUT_LOG_FILENAME echo " $HASH:$FILENAME " >> $OUT_LOG_FILENAME echo "*******************************************************" >> $OUT_LOG_FILENAME git show $HASH:$FILENAME >> $OUT_FILENAME let INDEX=INDEX+1 done