754

我克隆了某个项目的 git 存储库。我可以将文件转到初始状态,当我查看文件时转到修订版 2、3、4 ......最新版本?我想大致了解一下该项目是如何发展的。

4

7 回答 7

1143

在执行此命令之前,请记住它会使您处于分离头状态

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

<sha1>您可以获得的提交唯一编号在哪里git log

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

  • 复制文件或对 git 文件夹外的文件夹进行所需的更改,检查分支是否需要它们git checkout <existingBranch>并替换文件
  • 创建一个新的本地分支git checkout -b <new_branch_name> <sha1>
于 2011-09-24T12:52:51.397 回答
73

要转到特定版本/提交,请运行以下命令。您可以从中获得的哈希码git log --oneline -n 10

git reset --hard HASH-CODE

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

于 2016-06-26T15:07:00.387 回答
22

您可以使用gitk. 赶紧跑:

gitk --all

如果要签出特定分支:

git checkout <branch name>

对于特定的提交,使用 SHA1 哈希而不是分支名称。(请参阅Git Community Book中的Treeishes,这是一本很好的读物,以查看导航树的其他选项。)

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

我不知道在提交历史中前进的简单方法。具有线性历史的项目可能并不那么普遍。像使用 SVN 或 CVS 那样进行“修订”的想法并不能很好地映射到 Git 中。

于 2011-09-24T12:54:41.087 回答
6

使用提交的 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>

于 2016-05-16T15:13:19.580 回答
2

我的情况是,我们有一个 master 分支,然后是另一个名为 17.0 的分支,在这个 17.0 内部有一个提交哈希 no say "XYZ"。并且在该 XYZ 版本之前为客户提供构建。现在我们遇到了一个错误,需要为该客户解决。所以我们需要为那个客户创建单独的分支,直到那个“xyz”哈希。所以这就是我的做法。

首先,我在本地计算机上使用该客户名称创建了一个文件夹。一旦创建了该文件夹,就说客户名称是“AAA”,在该文件夹中发出以下命令:

  1. 混帐初始化
  2. git clone在这个命令之后,你将在 master 分支上。所以切换到所需的分支
  3. git checkout 17.0这会将您带到您的提交所在的分支
  4. git checkout这将把你的存储库带到那个哈希提交。查看您的分支的名称,它已更改为该提交哈希编号。现在给这个哈希一个分支名称
  5. git branch ABC这将在您的本地计算机上创建一个新分支。
  6. git结帐ABC
  7. git push origin ABC这会将这个分支推送到远程存储库并在 git 服务器上创建一个分支。你完成了。
于 2019-01-15T12:09:01.100 回答
1

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

使用git format-patch <initial revision>然后git checkout <initial revision>。你应该在你的director中得到一堆以四位数字开头的文件,这些文件是补丁。

当您阅读完您的修订版后,只需执行git apply <filename>应该看起来 git apply 0001-*和计数的操作即可。

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

git手册也给了我这个:

git show next~10:Documentation/README

显示文件 Documentation/README 的内容,因为它们在下一个分支的第 10 次最后提交中是最新的。

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

于 2011-09-24T13:29:26.647 回答
1

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

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

移至该代码后,如果要对其进行处理并进行更改,则应使用 进行另一个分支git checkout -b <new-branch-name>,否则将不会保留更改。

于 2020-02-17T15:14:47.253 回答