乐闻世界logo
搜索文章和话题

How can i view an old version of a file with git?

8 个月前提问
4 个月前修改
浏览次数68

5个答案

1
2
3
4
5

如果提交发生在过去 90 天内,则按日期执行此操作看起来像这样:

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

请注意,这 HEAD@{2013-02-25}意味着此存储库中的“HEAD 位于 2013-02-25”(使用reflog),而不是“历史记录中此分支中 2013-02-25 之前的最后一次提交”。

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

shell
git show $(git rev-list -1 --before="2013-02-26" HEAD):./fileInCurrentDirectory.txt
2024年6月29日 12:07 回复

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

shell
$ git show REVISION:path/to/file

替换 REVISION为您的实际修订(Git 提交 SHA、标记名称、分支名称、相对提交名称或在 Git 中标识提交的任何其他方式)。

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

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

即使在相对于当前目录的路径中,Windows 版 Git 也需要_正斜杠。

2024年6月29日 12:07 回复

如果你喜欢 GUI,你可以使用 gitk:

  1. 启动 gitk:

    shell
    gitk /path/to/file
  2. 在屏幕顶部选择修订版本,例如按说明或日期。默认情况下,屏幕的下部显示该修订版的差异(对应于“补丁”单选按钮)。

  3. 要查看所选版本的文件:

    • 单击“树”单选按钮。这将显示该修订版文件树的根。
    • 深入查看您的文件。
2024年6月29日 12:07 回复

您还可以使用命令commit hash指定 a (通常也称为commit ID)。git show


简而言之

git show <commitHash>:/path/to/file


一步步

  1. 显示给定文件的所有更改日志git log /path/to/file
  2. 在显示的更改列表中,它显示了诸如commit hashcommit 06c98...06c98...是提交哈希)
  3. 复制commit hash
  4. git show <commitHash>:/path/to/file使用commit hash步骤 3 和path/to/file步骤 1运行命令。

注意:./指定相对路径时添加似乎很重要,即git show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html

2024年6月29日 12:07 回复

要快速查看文件与旧版本的差异:

git show -1 filename.txt> 与文件的最新版本进行比较

git show -2 filename.txt> 与最后第二个修订版进行比较

git show -3 fielname.txt > 与最后第三次修订进行比较

2024年6月29日 12:07 回复

你的答案