我已经用 Git 删除了一个文件,然后提交了,因此该文件不再在我的工作副本中。我想查看该文件的内容,但不是实际还原它。我怎么能这么做?
git show HEAD^:path/to/file
可以使用显式提交标识符或 HEAD~n查看旧版本,也可以查看删除后是否有多个提交。
HEAD~n
因为您可能不记得确切的路径,所以您可以从 git 日志中获取 sha1,然后您可以简单地发出
git cat-file -p <sha1>
如果这是一个您已经删除了一段时间的文件和 不想再找修订版了,您可以使用(这个例子中的文件名为 foo; 您可以使用一个完整的路径) :
foo
git show $(git rev-list --max-count=1 --all -- foo)^:foo
rev-list调用查找 foo的所有版本,但只列出一个版本。因为 rev-list按照相反的时间顺序列出,那么它列出的是最后一个修改了 foo的版本,也就是删除了 foo的提交。(这是基于这样一个假设: git 不允许更改已删除的文件,但 留下已被删除。)您不能仅仅使用 rev-list返回 foo0的修订版,因为 foo已经不存在了。你必须要求一个刚好在它之前,其中包含文件的最后修订,因此在 git show的 ^。
rev-list
git show
^