Git中的HEAD
和master
有什么区别?
我在GitHub上做了一个项目的克隆,并希望将我的更改推送到远程。但我应该推动哪一个?
答案 0 :(得分:141)
master
是对分支结尾的引用。按照惯例(默认情况下),这通常是主要的集成分支,但不一定是。
HEAD
实际上是一种特殊类型的引用,指向另一个引用。它可能指向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
答案 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。
HEAD
将指定该遥控器的默认分支
见git remote set-head
man page:
不需要为遥控器设置默认分支,但允许指定遥控器的名称来代替特定分支。
例如,如果origin
的默认分支设置为master
,则可以在通常指定origin
的任何位置指定origin/master
。