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。