当前位置:  开发笔记 > 前端 > 正文

是否有快速Git命令来查看旧版本的文件?

如何解决《是否有快速Git命令来查看旧版本的文件?》经验,为你挑选了7个好方法。

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



1> mipadi..:

你可以使用git show:

$ git show REVISION:path/to/file

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

例如,要查看./4次提交前的文件版本,请使用:

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

请注意,路径来自存储库的根目录,除非它以./或../开头以指示相对路径.即使在相对于当前目录的路径中,Git for Windows也需要正斜杠.有关更多信息,请查看手册页../.


是的,我试了一下 - 它对我有用.
如果你在Windows上,它可能是一个路径分隔符; 如果我做git show HEAD:dir\_divir\file,我会得到一个明确的论点.如果我做git show HEAD:dir/subdir/file,它按预期工作.
在:之后必须提供的路径来自git存储库的根目录.(这在下面作为答案给出,但我认为这是对这个答案的评论)
如果你想在Vim中看到它以便它们一起滚动,我写了一篇简短的[博文](http://readncode.com/blog/view-old-git-version-of-a-file-in -a-vim-split /)显示如何做到这一点.
这实际上似乎没有用 - 你试过吗?对于"git show HEAD:path/to/file.c",我得到一个"模糊的参数"错误.
必须是完整的路径,从git repo的顶部
您还可以使用`(commit):(文件路径)|将git show重定向到vim vim -`.我发现这比使用默认使用的更少/更多更好.

2> Jim Hunziker..:

按日期执行此操作如下所示:

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

需要注意的是HEAD@{2013-02-25}指在这个仓库"里HEAD是在2013年2月25日"(使用了引用日志),而不是"2013年2月25日之前的最后一次提交这个分支的历史".


这种语法使用reflog的事实很重要,应该强烈强调,因为**reflog不包含所有提交**.请参见http://blog.endpoint.com/2014/05/git-checkout-at-specific-date.html
真棒.节省我的时间,而不是去github并查看提交.
如果你在一个分支上,这个命令对`master`而不是`HEAD @ {2013-02-25}`很有用

3> 小智..:

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

    启动gitk:

    gitk /path/to/file
    

    选择屏幕顶部的修订版本,例如按说明或日期.默认情况下,屏幕的下半部分显示该修订的差异(对应于"补丁"单选按钮).

    要查看所选修订的文件:

    单击"树"单选按钮.这将显示该修订版本的文件树的根目录.

    深入查看您的文件.


这也适用于[tig](http://blogs.atlassian.com/2013/05/git-tig/),这是一个curses git repo viewer.

4> Adrien Be..:

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


简而言之

git show :/path/to/file


一步步

    显示给定文件的所有更改的日志 git log /path/to/file

    在显示的更改列表中,它显示了commit hash诸如commit 06c98...(06c98 ...是提交哈希)

    复制 commit hash

    git show :/path/to/file使用commit hash步骤3和path/to/file步骤1 的步骤运行命令.

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


`.`对我来说是必要的; 谢谢.

5> Ijas Ameenud..:

除了Jim Hunziker的回答,

您可以从修订版中导出文件,

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

希望这可以帮助 :)



6> sanbor..:

git log -p将不仅显示提交日志,还显示每个提交的差异(合并提交除外).然后你可以按/,输入文件名并按enter.按np转到下一个/上一个事件.这样,您不仅可以看到文件中的更改,还可以查看提交信息.


看起来`git log -pm`也会显示合并提交.

7> sachin_ur..:

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

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

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

git show -3 fielname.txt >与最新的第三修订版进行比较


这些命令为我显示了与当前版本的差异,但没有显示整个文件。
推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有