查找 git 结帐的哈希

Finding hash for git checkout

我正在学习 git 沉浸式教程。我们要检查一个分支。说明说要输入以下内容

$ git checkout <hash>

$ cat hello.rb

它说该命令取决于存储库中的 has 值,而我的哈希值将与他们的不同,因此我应该用正确的哈希值替换我的存储库。我怎么知道用什么来代替我的散列值?他们使用了一些长号码,但我在屏幕上根本看不到号码?

此外,我对教程有些迷惑,他们到底让我做什么?我已经完成了其他教程,他们告诉我使用 get checkout master,所以这有什么不同吗?

感谢您提供有关此问题的任何背景信息,以及我需要做什么才能获得此哈希值。我想添加一个屏幕截图图像来帮助澄清,但我是新手,所以它不允许我这样做。我会复制希望对您有所帮助的文字...

 $ git checkout 9416416
Note: checking out '9416416'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 9416416... First Commit
$ cat hello.rb
puts "Hello, World"

我假设你在这一步:http://gitimmersion.com/lab_12.html?

如果您按照前几页进行操作,他们会告诉您设置 git 别名以使输入更容易,但这是可选的。

要查找您的散列(提交的唯一 ID),请键入 git log。注意时间顺序,将 40 位字母数字值复制并粘贴到单词 commit 之后。这是该特定提交的哈希值。

这些说明的目的是向您展示您可以 'rollback' 或查看 hello.rb 内容的历史记录,方法是选择提交的不同哈希并通过键入 git checkout <hash>。当您键入 cat hello.rb 时,您正在输出该 hello.rb 文件的内容。

您可以签出一个提交(通过复制+粘贴该散列值或什至是该散列的前几个字母数字字符)或一个分支,这就是其他教程所说的“git checkout master”。

编辑: 您的 git 哈希将与作者或教程的哈希不匹配,因为它是您自己提交的唯一 ID,对于您作为作者而言是唯一的并且是唯一的到您提交时的时间戳。

本教程要您做的是检查存储库历史记录中的特定点。他们正在证明您可以回到过去并将项目的内容设置为该状态。

Git 用 SHA 命名每个提交。在你展示你所做的事情的例子中是 9416416。如果你这样做 git log 你会看到一长串数字和字母与每个提交相关联。这就是本教程所讨论的哈希。你的将与教程不同,因为 git 在计算哈希时使用日期和作者字符串。

由于散列的伪随机性质,您实际上只需要 git 的散列的前 6 - 8 个字符就可以毫无歧义地确定您正在谈论的是哪一个。

其他教程告诉您 git checkout master,这样做是将您的存储库状态更改为 master 分支中的最新提交。不同之处在于,检查哈希会将事情更改为历史记录中的特定点。这样做意味着您不在任何分支上(您签出的提交可能是任意数量分支历史记录的一部分)。所以 git 让你知道消息 You are in 'detached HEAD' state. This 是为了提醒你你不在分支上,最终可能会提交不在分支上的提交并且会丢失。