如何从旧提交中提取文件?

时间:2018-02-01 11:58:40

标签: git

如何从第一次提交"原始报告"中获取原始报告文件,而不会丢失当前提交的可能性?

$ git log
commit 8ad11e4940d81bc33f8d0e19cad6007e632e7434 (HEAD -> master)
Author: Oshirowanen
Date:   Wed Jan 31 11:08:18 2018 +0000

    Modified Date column to show NA if date is missing

commit 00cb9757d432e4dd425ff33af90ed25c91102914
Author: Oshirowanen
Date:   Wed Jan 31 09:31:41 2018 +0000

    Added 1 column, removed 4 columns

commit d7e111384e04b52464edda76bcfd24693b89509
Author: Oshirowanen
Date:   Wed Jan 31 09:27:03 2018 +0000

    Original report

Oshirowanen@Desktop MINGW64 /c/Users/Oshirowanen/Documents/Reports/Report 1 (master)
$

2 个答案:

答案 0 :(得分:1)

使用git checkout

git checkout d7e1113 -- "Report 1"

(将上面命令中的"Report 1"替换为您要获取的文件的路径。)

该命令更新文件的索引和工作副本"报告1"使用它在提交d7e1113中的版本(主题"原始报告")。

答案 1 :(得分:1)

git show可以做到这一点:

$ git show d7e111384e0:relative/path/to/the/file > where/to/save/the/file

这里,命令的一般形式是git show REVISION:path>是shell的重定向运算符,可重定向 git show输出到指定文件。

有关语法的详细信息,请参见gitrevisions手册页:

  

<rev>:<path>,例如HEAD:README:READMEmaster:./README

     

后缀:后跟一个路径,命名由名为的tree-ish对象中给定路径的blob或树。   结肠前的部分。 :path(在冒号前面有一个空的部分)是语法的一个特例   下面描述:在给定路径的索引中记录的内容。以./../开头的路径是   相对于当前工作目录。给定的路径将被转换为相对于   工作树的根目录。这对于从提交或树中处理blob或树最有用   与工作树具有相同的树结构。

使用git help revisions命令读取它。