繁体   English   中英

如何从git存储库中获取文件的特定(较旧)版本,而不清除较新版本?

[英]How do I get a particular (older) version of a file from git repository without wiping out later versions?

我应该认为获得以前的版本是源代码管理的主要功能之一,应该很简单,但似乎找到了git解决方案就是寻宝。

我遇到了stackoverflow问题, 如何在Git中检出某个文件的特定版本? 解释关键的事情:

git checkout <commit hash from git log output>

正如我预期的那样,工作目录中的文件已用请求的较早版本替换/更新,但是我在存储库中丢失了较新版本,并收到诸如“ ...分离头...”的消息。

这里的任何指导原则将不胜感激。 谢谢。

如果您有一个像abc123456这样的特殊提交,并且该提交很好,那么您只需要...

git checkout abc123456 path/to/file

使用此命令,您将在阶段找到该文件的版本。

您还可以使用分支:

git checkout old-branch-name path/to/file

当您只使用git checkout <somehash> ,您将进入一个分离的HEAD。 发生这种情况的原因是,默认情况下git checkout仅切换分支,并且指定提交而不是分支会使您进入“无分支模式”(这是HEAD分离的意思)。

如果要从其他版本获取单个文件,则还需要指定路径,即git checkout <somehash> -- path/to/file 这将使所有内容保持不变,只是将path/to/file替换为<somehash>版本。

因此,这确实会覆盖文件。 如果还要保留当前版本,则应首先重命名。 否则,您也可以为此使用git show的特殊语法

git show <somehash>:path/to/file > new_filename.ext

这实际上将从<somehash>获取文件的内容并进行打印,因此,如果将其通过管道传输到文件,则可以将不同版本的文件提取到不同的文件名中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM