Git中是否有命令可以查看(转储到stdout,或在$PAGER或$EDITOR中)特定文件的特定版本?


当前回答

除了吉姆·亨齐克的回答,

可以将修订中的文件导出为,

git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt > old_fileInCurrentDirectory.txt

希望这有帮助:)

其他回答

如果提交发生在最近90天内,则按日期执行如下操作:

git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt

注意,HEAD@{2013-02-25}在这个存储库中表示“HEAD在2013-02-25的位置”(使用reflog),而不是“历史上这个分支中2013-02-25之前的最后一次提交”。

这很重要!这意味着,默认情况下,此方法仅适用于过去90天内的历史记录。否则,您需要执行以下操作:

git show $(git rev-list -1 --before="2013-02-26" HEAD):./fileInCurrentDirectory.txt

要快速查看与文件旧版本的差异,请执行以下操作:

git show-1 filename.txt>以与文件的最新版本进行比较git show-2 filename.txt>与第二个最新版本进行比较git show-3 fielname.txt>与上一个第三个最新版本进行比较

您可以使用git show和存储库根目录的路径(./或../表示相对路径):

$ git show REVISION:path/to/file

用实际版本替换REVISION(可以是Git提交SHA、标记名称、分支名称、相对提交名称或任何其他标识Git中提交的方式)

例如,要查看4次提交之前的文件<repositoryroot>/src/main.c版本,请使用:

$ git show HEAD~4:src/main.c

Git for Windows甚至要求在相对于当前目录的路径中使用正斜杠。有关更多信息,请查看gitshow的手册页。

您可以使用这样的脚本将文件的所有版本转储到单独的文件中:

e.g.

git_dump_all_versions_of_a_file.sh path/to/somefile.txt

在此处获取脚本,作为另一个类似问题的答案

gitlog-p不仅会显示提交日志,还会显示每次提交的差异(合并提交除外)。然后可以按/,输入文件名,然后按enter。按n或p转到下一次/上一次出现。这样,您不仅可以看到文件中的更改,还可以看到提交信息。