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
所指的不是任何分支的尖端,这称为“分离头”。
master:git 在第一次创建 repo 时为你创建的默认分支的名称。在大多数情况下,“master”表示“主分支”。大多数商店都有每个人都在推动掌握,而掌握被认为是回购的权威观点。但是,发布分支也很常见,由 master 制成以进行发布。您的本地 repo 有自己的 master 分支,几乎总是跟随远程 repo 的 master 分支。
origin:git 为您的主要远程仓库提供的默认名称。你的盒子有自己的仓库,你很可能会推送到你和你所有同事推送到的某个远程仓库。那个远程仓库几乎总是被称为 origin,但它不是必须的。
HEAD
是 git 中的官方概念。 HEAD
总是有明确的含义。 master
和 origin
是 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 [重复]