我认为获得以前的版本是源代码控制的首要功能之一,并且应该很简单,但它似乎是寻宝解决git解决方案。
我遇到了stackoverflow问题numpy.geomspace。解释关键的事情:
git checkout <commit hash from git log output>
正如我预期的那样,工作目录中的文件被替换/更新了所请求的旧版本,但是我丢失了存储库中的更高版本,得到了一条消息,如&#34; ...分离头。 ..&#34;
这里的任何指导原则将不胜感激。感谢。
答案 0 :(得分:1)
如果您有一个特殊的提交,例如abc123456
,并且在该提交中文件很好,您只需...
git checkout abc123456 path/to/file
使用此命令,您将在该阶段找到该文件的版本。
您也可以使用分支机构:
git checkout old-branch-name path/to/file
答案 1 :(得分:1)
当你只使用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>
获取文件的内容并打印出来,因此如果将其传输到文件,则可以将不同版本的文件解压缩到不同的文件名中。