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


当前回答

如果提交发生在最近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>与上一个第三个最新版本进行比较

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

方式1:(我更喜欢这种方式,不能丢失未提交的数据)

使用:git reflog查找提交id列出提交git diff树中的文件--无提交id--仅名称-r<commitHash>例子:git diff树--无提交id--仅名称-r d2f9ba4d2f9ba4是来自步骤1的提交id。使用以下命令打开所需文件:git show<commitHash>:/path/to/file例子:git show d2f9ba4:Src/Ext/MoreSwiftUI/ListCustom.swift服务器/。。。是步骤2的文件路径。


方式2:(能够丢失未提交的数据)

使用:git reflog查找提交id对此提交进行硬重置:git reset--hard%commit ID%例子:git重置--硬c14809fa进行必要的更改并向所需的分支执行新的提交

如果提交发生在最近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

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

gitk开头为:gitk/path/to/file选择屏幕顶部的修订,例如按描述或日期。默认情况下,屏幕下部显示该版本的差异(对应于“补丁”单选按钮)。要查看选定版本的文件,请执行以下操作:单击“树”单选按钮。这将显示该版本的文件树的根。深入到您的文件。