找到git checkout的哈希值

时间:2015-05-06 19:05:57

标签: git hash git-checkout

我正在通过git浸入式教程。我们要检查一个分支机构。说明说明键入以下

$ git checkout <hash>

$ cat hello.rb

它说命令取决于repo中的has值,我的哈希值将与他们不同,所以我应该用我们的repo替换正确的哈希值。我怎么知道用哈希值代替什么?他们使用了一些很长的号码,但我根本看不到屏幕上的号码?

另外我在教程中有点遗失他们究竟让我做什么?我已经完成了其他教程,他们告诉我使用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"

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

编辑:您的git哈希值与作者或教程的哈希值不匹配,因为它是您作为作者唯一的自己提交的唯一ID,并且在您提交时对时间戳是唯一的。< / p>

答案 1 :(得分:1)

教程的目的是查看回购历史记录中的特定点。他们证明你可以回到过去并将项目的内容设置为该状态。

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

由于散列的伪随机特性,你实际上只需要git散列的前6到8个字符来确定你正在谈论哪一个而没有任何歧义。

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