HEAD、master、origin的git概念是啥?

Posted

技术标签:

【中文标题】HEAD、master、origin的git概念是啥?【英文标题】:What are the git concepts of HEAD, master, origin?HEAD、master、origin的git概念是什么? 【发布时间】:2012-01-02 01:13:02 【问题描述】:

在学习 git 时,我不断遇到 HEAD、master、origin 等术语,但我不确定它们之间的区别是什么。如果我理解正确, HEAD 总是等于最新版本?如果是这样,那是整个存储库的最新版本,还是特定分支或标签的最新版本?这太令人困惑了。我已经阅读了很多关于此以及分支/合并之类的教程,但仍然无法理解它。

【问题讨论】:

“This is so confusing… but still can't wrap my head around it.” 我知道你在那里做了什么...... ???? 【参考方案1】:

我强烈推荐这本书"Pro Git" by Scott Chacon。花点时间真正阅读它,同时像你一样探索一个实际的 git repo。

HEAD:您的 repo 正在进行的当前提交。大多数时候HEAD 指向您当前分支中的最新提交,但不一定是这种情况。 HEAD 真的只是意味着“我的回购目前指向什么”。

如果提交 HEAD 所指的不是任何分支的尖端,这称为“分离头”。

ma​​ster:git 在第一次创建 repo 时为你创建的默认分支的名称。在大多数情况下,“master”表示“主分支”。大多数商店都有每个人都在推动掌握,而掌握被认为是回购的权威观点。但是,发布分支也很常见,由 master 制成以进行发布。您的本地 repo 有自己的 master 分支,几乎总是跟随远程 repo 的 master 分支。

origin:git 为您的主要远程仓库提供的默认名称。你的盒子有自己的仓库,你很可能会推送到你和你所有同事推送到的某个远程仓库。那个远程仓库几乎总是被称为 origin,但它不是必须的。

HEAD 是 git 中的官方概念。 HEAD 总是有明确的含义。 masterorigin 是 git 中常用的常用名称,但并非必须如此。

【讨论】:

你所说的“HEAD 真的只是意味着“我的仓库当前指向什么”是什么意思。如果存储库中有多个分支,您认为哪个是 HEAD?如果有 3 个分支(连同 master),并且在 branchA 中进行了需要提交,则 HEAD 仍然可以在“master”的提交中。那么,回购现在指向的修订版是哪一个? 不清楚您所说的 repo(本地或远程)是什么意思。一般来说,您的答案使用表达式,之前没有解释它们。 @JingHe 你读过整本书吗?是不是真的值得吗?我的意思是我们正在谈论一个 500 多页的阅读量,这对我来说似乎有点太多了...... 为了验证我理解逻辑,我可以调用远程分支作为 featureA,当我推送到那个分支时,我输入“git push origin featureA”。我也可以通过说“git pull origin featureA”从遥控器中提取相同的内容,进行更改。而 head 仅指本地副本。 @ OK999 我相信 HEAD 指向您目前在本地签出的任何一个分支。如果提交是在 branchA 中进行的,但当前您在 branchB 上,则 HEAD 指向 branchB。在执行特定提交之前,您必须将 HEAD 移回 branchA。 @ShawnFumo 感谢您的建议。我可能会读进去。我希望之前没有读过这 9 章也能理解。【参考方案2】:

虽然这不能直接回答问题,但有一本很棒的免费书籍可以帮助您学习称为 ProGit。如果您更喜欢死木版本而不是钻头集合,可以从Amazon 购买。

【讨论】:

问题没有求书!我仍然不清楚,为什么我需要一本关于 git 的书,而我不需要一本关于 C++ 的书。 你只认为你不需要 C++ 的书 ;)【参考方案3】:

HEAD 不是最新版本,它是当前 版本。通常,它是当前分支的最新版本,但不一定是。

master 是主分支的常用名称,但它也可以称为其他任何名称(或者可能没有主分支)。

origin 是主遥控器的常用名称。 remote 是另一个您可以从中提取和推送到的存储库。通常它在某个服务器上,比如 github。

【讨论】:

你能举例说明 HEAD 是最新的但不是最新的吗?我以前从未见过。还是您的意思是它可能不是最新的,因为您的分支位于它正在跟踪的远程分支之后? @MattGreer:如果您签出旧的东西(例如git checkout v1.1 之类的标签),那么您的 HEAD 将更改为该标签的提交。它可能不是最新的提交。

以上是关于HEAD、master、origin的git概念是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Git,Github - origin/main vs origin/master [重复]

'git push origin master'中'origin'是什么意思

git命令-切换分支

git切换分支

git log

git 查看远程分支本地分支删除本地分支