首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Git中的特定修订中检索单个文件?

如何从Git中的特定修订中检索单个文件?
EN

Stack Overflow用户
提问于 2009-03-04 11:43:13
回答 11查看 472.3K关注 0票数 1K

我有一个Git存储库,我想看看几个月前一些文件的外观。我在那一天发现了修订版,是27cf8e84bb88e24ae4b4b3df2b77aab91a3735d8。我需要查看一个文件的外观,并将其保存为(“新”)文件。

我设法使用gitk查看了该文件,但它没有保存它的选项。我试过用命令行工具,我得到的最接近的是:

代码语言:javascript
复制
git-show 27cf8e84bb88e24ae4b4b3df2b77aab91a3735d8 my_file.txt

但是,此命令显示的是一个diff,而不是文件内容。我知道我以后可以使用PAGER=cat之类的东西并将输出重定向到一个文件,但是我不知道如何获得实际的文件内容。

基本上,我在寻找类似于svn猫的东西。

EN

回答 11

Stack Overflow用户

发布于 2010-11-18 19:41:15

如果希望将当前分支中的文件的内容与来自以前提交或其他分支的文件的内容进行replace/overwrite,则可以使用以下命令:

代码语言:javascript
复制
git checkout 08618129e66127921fbfcbc205a06153c92622fe path/to/file.txt

代码语言:javascript
复制
git checkout mybranchname path/to/file.txt

然后,您必须提交这些更改,以便它们在当前分支中生效。

票数 544
EN

Stack Overflow用户

发布于 2009-03-04 11:46:35

您需要提供文件的完整路径:

代码语言:javascript
复制
git show 27cf8e84bb88e24ae4b4b3df2b77aab91a3735d8:full/repo/path/to/my_file.txt
票数 164
EN

Stack Overflow用户

发布于 2015-07-07 13:55:10

最简单的方式是编写:

代码语言:javascript
复制
git show HASH:file/path/name.ext > some_new_name.ext

其中:

  • 散列是Git修订版SHA-1散列编号。
  • file/path/name.ext是您要查找的文件的名称。
  • some_new_name.ext是保存旧文件的路径和名称。

示例

代码语言:javascript
复制
git show 27cf8e84bb88e24ae4b4b3df2b77aab91a3735d8:my_file.txt > my_file.txt.OLD

这将将my_file.txt从修订27cf8e中保存为一个名为的新文件。

用Git 2.4.5进行了检测。

如果要检索已删除的文件,可以使用HASH~1 (在指定的哈希之前提交一次)。

例子:

代码语言:javascript
复制
git show 27cf8e84bb88e24ae4b4b3df2b77aab91a3735d8~1:deleted_file.txt > deleted_file.txt
票数 129
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/610208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档