当我们 git 签出提交时会发生什么
What happens when we git checkout a commit
我想知道如果我们使用 git checkout <commit hash>
并且提交是在多个分支中,我们如何知道哪个被签出?
我不知道如何在视觉上做到这一点,所以我试着画了一点,抱歉。
我不允许直接 post 它所以这里是 link.
如果我们有这三个分支,那么我们 git checkout <Commit Z>
,我们会得到分支 A 还是分支 B?
它是如何工作的?谢谢!
https://i.stack.imgur.com/Y3wJr.png
Branch是commit的reference,在用户眼中就是head of branch。如果您按字面意义(通过 SHA)签出提交,您将进入 head 分离状态。
git checkout <commit>
在此提交时设置 HEAD
,无论任何分支可能指向或不指向所述提交。
工作树会相应更新,您会得到所谓的 detached HEAD。从这一点开始的进一步提交确实会将 HEAD 作为它们的父级,但是在您创建一个分支(或在此处创建一个现有的一个点)之前没有分支指向它。
分支名称只是提交哈希的漂亮名称(确切地说是分支 HEAD)。
签出提交哈希将使您进入 "detached head" 状态。
您可以阅读它here,或在线搜索分离头部状态及其含义
一个commit(hash)可以属于多个分支,多个分支的HEAD可以指向同一个commit hash。
签出提交(无论它是否是任何分支的 HEAD)将使您进入分离的 HEAD 状态。
我想知道如果我们使用 git checkout <commit hash>
并且提交是在多个分支中,我们如何知道哪个被签出?
我不知道如何在视觉上做到这一点,所以我试着画了一点,抱歉。
我不允许直接 post 它所以这里是 link.
如果我们有这三个分支,那么我们 git checkout <Commit Z>
,我们会得到分支 A 还是分支 B?
它是如何工作的?谢谢!
https://i.stack.imgur.com/Y3wJr.png
Branch是commit的reference,在用户眼中就是head of branch。如果您按字面意义(通过 SHA)签出提交,您将进入 head 分离状态。
git checkout <commit>
在此提交时设置 HEAD
,无论任何分支可能指向或不指向所述提交。
工作树会相应更新,您会得到所谓的 detached HEAD。从这一点开始的进一步提交确实会将 HEAD 作为它们的父级,但是在您创建一个分支(或在此处创建一个现有的一个点)之前没有分支指向它。
分支名称只是提交哈希的漂亮名称(确切地说是分支 HEAD)。
签出提交哈希将使您进入 "detached head" 状态。
您可以阅读它here,或在线搜索分离头部状态及其含义
一个commit(hash)可以属于多个分支,多个分支的HEAD可以指向同一个commit hash。
签出提交(无论它是否是任何分支的 HEAD)将使您进入分离的 HEAD 状态。