HEAD和master之间的区别

时间:2010-12-08 11:38:06

标签: git github head master

Git中的HEADmaster有什么区别?

我在GitHub上做了一个项目的克隆,并希望将我的更改推送到远程。但我应该推动哪一个?

screenshot

3 个答案:

答案 0 :(得分:141)

master是对分支结尾的引用。按照惯例(默认情况下),这通常是主要的集成分支,但不一定是。

HEAD实际上是一种特殊类型的引用,指向另一个引用。它可能指向master 或者可能不是(它将指向当前已检出的任何分支)。如果您知道要提交到master分支,那么请推送到此。

这是一个直观的例子:

alt text

在您自己的存储库中,您可以运行以下命令检查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

答案 1 :(得分:31)

简单的答案是HEAD是您当前所在分支的最新提交的指针/标签。 master是初始化git存储库时创建的默认分支(例如git init)。

您可以删除master分支(例如git branch -D master)。您无法删除HEAD指针。

答案 2 :(得分:8)

只需推送当前分支的更改

git push origin

它会将您的分支“B”更改为“origin/B” 如果您在master分支机构,git将推送到origin/master 实际上,它会在origin处推送具有匹配远程分支的本地分支上的所有更改。它由配置设置 push.default 控制 另请参阅pushing RefSpecs in the Pro Git book


您所看到的是侧栏代表Experimental GitX fork GitX project中远程仓库的所有refspec。

alt text

HEAD将指定该遥控器的默认分支 见git remote set-head man page

  

不需要为遥控器设置默认分支,但允许指定遥控器的名称来代替特定分支。
  例如,如果origin的默认分支设置为master,则可以在通常指定origin的任何位置指定origin/master