与git fetch
你有“遥控器”。通常的第一个遥控器是origin
,但可能还有更多。
一般情况下,人们有分支机构。
远程存储库通常是一个git存储库,这意味着它有分支机构。
假设您决定创建一个没有其他人正在使用的新分支供您自己使用。你巧妙地称它为branch
。唉,现在乔有完全相同的想法,并称他的分支branch
,他推送到您在origin
共享的存储库。
然后你运行git fetch origin
(或git fetch
,使它达到origin
,同样的事情)。而且......它让Joe的branch
。
你的分支怎么办?
答案是:什么都没有!这是关于git分支的伟大之处:您的本地分支机构是您的,而且您是独自一人,只有您可以影响他们。
但是,如果你想使用“他们的”分支?那么,当你的git咨询他们并获得“他们”分支的列表时,它将重命名为。如果您从origin
处获取分支,并且在那里有一个名为branch
的分支,git会将您的副本更改为“远程分支”,它将其命名为origin/branch
。如果您拥有更多遥控器,则遥控器another
上的分支branch
变为another/branch
。
所以,origin/cawhatever
是“复印”的“分支cawhatever
”,在去年看到远程命名origin
,最后一次使用Git有机会到那边去看看在那里。 Git在fetch
和push
操作上更新了这些操作(尽管在较旧版本的git中,如果以git pull
的方式运行它,它会抑制“远程分支”的更新)。
完整的故事有点长:你的地方分支机构具有与refs/heads/
开头的“全名”。这基本上是一个充满分支名称(和/或分支名称更多的子目录)的“目录”或“文件夹”。远程分支生活在“目录”下的空间refs/remotes/
。这保证你和他们的人永远不会碰撞。但有时当你添加一个遥控器时,它可能会意外地与你所创建的分支有相同的名字。 (想一想,如果你创建了一个名为origin
的本地分支,会发生什么情况!)在这种情况下,你必须拼出名称的较长形式(请参阅gitrevisions)。
标签生活在refs/tags/
。没有内置的标签重命名,所以当你把它们的标签放进去时,它们就像你自己的标签一样进入相同的名字空间。这使得使用标签更加微妙,特别是如果您开始与多种不同的遥控器对话时。
不过,大多数情况下,只要将远程分支想象为“他们上次检查了什么”。您可以让您的(本地)分支“跟踪”远程分支机构,然后git status
会告诉您“前方”和/或“后方”有多远,从您的存储库中“上次他们上次使用的内容检查”。
哇,谢谢! – ForgetfulFellow