Git中是否有命令可以查看(转储到stdout,或在$PAGER或$EDITOR中)特定文件的特定版本?
当前回答
gitlog-p不仅会显示提交日志,还会显示每次提交的差异(合并提交除外)。然后可以按/,输入文件名,然后按enter。按n或p转到下一次/上一次出现。这样,您不仅可以看到文件中的更改,还可以看到提交信息。
其他回答
您可以使用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的手册页。
如果您喜欢GUI,可以使用gitk:
gitk开头为:gitk/path/to/file选择屏幕顶部的修订,例如按描述或日期。默认情况下,屏幕下部显示该版本的差异(对应于“补丁”单选按钮)。要查看选定版本的文件,请执行以下操作:单击“树”单选按钮。这将显示该版本的文件树的根。深入到您的文件。
如果提交发生在最近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
您可以使用这样的脚本将文件的所有版本转储到单独的文件中:
e.g.
git_dump_all_versions_of_a_file.sh path/to/somefile.txt
在此处获取脚本,作为另一个类似问题的答案
要快速查看与文件旧版本的差异,请执行以下操作:
git show-1 filename.txt>以与文件的最新版本进行比较git show-2 filename.txt>与第二个最新版本进行比较git show-3 fielname.txt>与上一个第三个最新版本进行比较
推荐文章
- 如何配置Mac OS X术语,使git有颜色?
- Visual Studio Code: .git文件夹/文件隐藏
- “node_modules”文件夹应该包含在git存储库中吗
- 为什么git-rebase给了我合并冲突,而我所做的只是压缩提交?
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?