[英]Is there a way if I do git checkout a file of older version and then later git pull to get latest file again
[英]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.