Git中是否有命令可以查看(转储到stdout,或在$PAGER或$EDITOR中)特定文件的特定版本?
当前回答
如果您喜欢GUI,可以使用gitk:
gitk开头为:gitk/path/to/file选择屏幕顶部的修订,例如按描述或日期。默认情况下,屏幕下部显示该版本的差异(对应于“补丁”单选按钮)。要查看选定版本的文件,请执行以下操作:单击“树”单选按钮。这将显示该版本的文件树的根。深入到您的文件。
其他回答
除了吉姆·亨齐克的回答,
可以将修订中的文件导出为,
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
您还可以使用gitshow命令指定提交散列(通常也称为提交ID)。
简而言之
git show<commitHash>:/path/to/file
一步一步地
使用gitlog/path/to/file显示给定文件的所有更改的日志在所示的更改列表中,它显示了提交哈希,例如提交06c98…(06c98是提交哈希)复制提交哈希使用步骤3的提交哈希和步骤1的路径/to/file运行命令gitshow<commitHash>:/path/to/file。
注:添加./当指定相对路径似乎很重要时,即git show b2f8be57716657759b55e11cfff1404baf63a84:/飞行模拟/src/main/components/nav-oriz.html。
您可以使用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
在此处获取脚本,作为另一个类似问题的答案
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别