HEAD和主人之间的区别
Git中的HEAD
和master
什么区别?
我在GitHub上做了一个项目的克隆,并想把我的修改推送到远程。 但是我应该推哪一个?
master
是一个分支结束的参考。 按照惯例(默认情况下),这通常是主要的集成分支,但不一定是。
HEAD
实际上是指向另一个参考的特殊types的参考。 它可能指向master
或不可 (它会指向哪个分支当前被检出)。 如果你知道你想要提交到master
分支然后推到这个。
这是一个视觉例子:
在你自己的仓库上,你可以通过运行这个来检查HEAD
指向的地方:
$ git symbolic-ref HEAD refs/heads/master
但是,找出remotes/origin/HEAD
指向的位置更为棘手,因为它位于远程机器上。
这里有一个很好的关于git引用的小教程:
http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1
简单的答案是, HEAD
是您当前所在分支的最近提交的指针/标签。 master
是初始化一个git仓库时创build的默认分支(例如git init
)。
您可以删除master
分支(例如, git branch -D master
)。 您不能删除HEAD
指针。
只需推送您当前分支的更改
git push origin
它会把你的分支“ B
”变成“ origin/B
”。
如果你在你的master
分支,git将推到origin/master
。
实际上它会推动所有具有匹配的远程分支的本地分支的所有变化。 它由configuration设置push.default控制 。
另请参阅Pro Git书中的推荐RefSpecs 。
你看到的是在GitX项目的实验GitX分支中代表远程回购的所有refspecs的边栏。
HEAD
将指定该远程的默认分支。
参见git remote set-head
手册页 :
有一个远程默认分支不是必需的,但允许指定远程的名称,而不是一个特定的分支。
例如,如果origin
缺省分支设置master
,则可以在通常指定origin/master
标识的任何位置指定origin/master
。