转到特定版本

我克隆了某个项目的git存储库。我可以将文件转换为初始状态吗?当我查看文件时,可以转到版本2、3、4……最近的版本吗?我想概述一下该项目是如何发展的。

945418 次浏览

在执行这个命令记住它会让你留在分离头状态

使用git checkout <sha1>签出特定的提交。

其中<sha1>是您可以使用git log获得的提交唯一编号

以下是您处于分离头部状态后的一些选项:

  • 将文件复制或更改您需要的文件夹到git文件夹之外的文件夹,在您需要它们时签出分支git checkout <existingBranch>并替换文件
  • 创建一个新的本地分支git checkout -b <new_branch_name> <sha1>

您可以使用gitk等工具获得项目历史记录的图形视图。只需运行:

gitk --all

如果您想签出特定的分支:

git checkout <branch name>

对于特定的提交,请使用SHA1哈希而不是分支名称。(请参阅Git社区手册中的树木,这是一个很好的阅读,以查看导航树的其他选项。)

git log也有一整套选项来显示详细或摘要历史记录。

我不知道有什么简单的方法可以在提交历史记录中移动向前。具有线性历史记录的项目可能并不常见。像SVN或CVS那样的“修订”想法在Git中并不能很好地映射。

一种方法是创建对补丁的所有提交。签出初始提交,然后在阅读后按顺序应用补丁。

使用git format-patch <initial revision>,然后使用git checkout <initial revision>。你应该在你的导演中得到一堆文件,从四个数字开始,这是补丁。

当你读完你的修订后,只需做git apply <filename>,它应该看起来像git apply 0001-*和计数。

但是我真的很想知道为什么你不只是想阅读补丁本身?请在你的评论中发布这个,因为我很好奇。

git手册也给了我这个:

git show next~10:Documentation/README

显示文档/README文件的内容,因为它们在接下来的分支的第10次最后提交中是当前的。

您还可以查看git blame filename,它为您提供了一个列表,其中每一行都与提交哈希+作者相关联。

使用提交的SHA1键,您可以执行以下操作:

  • 首先,找到您想要的特定文件的提交:

    git log -n <# commits> <file-name>

    根据您的<# commits>,这将为特定文件生成提交列表。

    提示:如果您不确定要查找什么提交,一个很好的方法是使用以下命令:git diff <commit-SHA1>..HEAD <file-name>。此命令将显示当前版本的提交与特定文件的先前版本的提交之间的差异。

    注意:提交的SHA1键在git log -n的列表中的格式为:

提交<SHA1 id>

  • 第二,检查所需的版本:

    如果您找到了想要的提交/版本,只需使用命令:git checkout <desired-SHA1> <file-name>

    这将把您指定的文件版本放在暂存区中。要将其从暂存区中取出,只需使用命令:reset HEAD <file-name>

要恢复到指向远程存储库的位置,只需使用命令:git checkout HEAD <file-name>

要转到特定版本/提交,请运行以下命令。您可以从git log --oneline -n 10获取的HASH-CODE

git reset --hard HASH-CODE

说明-重置到特定版本/提交后,如果您想恢复所有被丢弃的提交,您可以运行git pull --rebase

我遇到的情况是,我们有一个主分支,然后另一个分支称为17.0,在这个17.0中有一个提交哈希没有说"XYZ"。并且客户在XYZ版本之前得到了一个构建。现在我们遇到了一个bug,需要为该客户解决。所以我们需要为该客户创建单独的分支,直到“xyz”哈希。这就是我是怎么做到的。

首先,我在本地机器上创建了一个带有该客户名称的文件夹。假设客户名称是“AAA”创建该文件夹后,在此文件夹中发出以下命令:

  1. gitinit
  2. git clone 在这个命令之后,你将在主分支上。所以切换到所需的分支
  3. git检查17.0这会将您带到提交所在的分支
  4. git签出 这将占用您的存储库直到该哈希提交。请参阅您的分支的名称,它已更改为该提交哈希否。现在为此哈希提供一个分支名称
  5. git分支abc这将在您的本地计算机上创建一个新分支。
  6. git检出abc
  7. git推送源abc这会将此分支推送到远程存储库并在git服务器上创建一个分支。你完蛋了。

要获取特定的提交代码,该提交的你需要哈希码。您可以通过两种方式获取该哈希代码:

  1. 从您的github/gitlab/bit桶帐户获取它。(它在您的提交URL上,即:github.com/user/my_project/commit/commit_hash_code),或者您可以
  2. git log并检查您最近在该分支上的提交。它会显示您提交的哈希代码和您提交代码时留下的消息。只需复制然后执行git checkout commit_hash_code

移动到该代码后,如果您想处理它并进行更改,您应该使用git checkout -b <new-branch-name>创建另一个分支,否则,更改将不会被保留。