HEAD和主人之间的区别

Git中的HEADmaster什么区别?

我在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