Git中的HEAD和master有什么区别?
HEAD
master
我在GitHub上做了一个项目的克隆,想把我的更改推到远程。但我该按哪一个呢?
只需推动当前分支的更改
git push origin
,它会将你的分支'B'推到'origin/B' 如果你在master分支上,git会推送到origin/master. 实际上,它将在本地分支上推送所有更改,这些本地分支在origin上有匹配的远程分支。它由配置设置948397年< a href = " https://stackoverflow.com/questions/948354/git-push-current-branch/948397 " > push.default < / >.控制 参见在Pro Git书中推送RefSpecs.
B
origin/B
origin/master
origin
你所看到的是边栏,它表示在GitX项目的实验性的GitX叉子中远程回购的所有refspecs。
HEAD将指定该远程的默认分支 看到git remote set-head手册页: < / p >
git remote set-head
不需要为远程指定默认分支,但是允许指定远程的名称来代替特定的分支 例如,如果origin的默认分支设置为master,则可以在通常指定origin/master的任何位置指定origin。< / p >
master是对分支结束的引用。按照惯例(默认情况下),这通常是主要的集成分支,但不一定非得如此。
HEAD实际上是一种特殊类型的引用,它指向另一个引用。它可能指向master 也可能不是(它将指向当前签出的分支)。如果你知道你想要提交到master分支,那么推到this。
下面是一个直观的例子:
在你自己的存储库中,你可以通过运行下面的命令来检查HEAD指向的位置:
$ git symbolic-ref HEAD refs/heads/master
然而,找出remotes/origin/HEAD指向的位置比较棘手,因为它在远程机器上。
remotes/origin/HEAD
有一个关于git引用在这里的小教程
简单的答案是HEAD是一个指针/标签,指向你当前所在分支的最近一次提交。master是初始化git存储库时创建的默认分支(例如git init)。
git init
你可以删除master分支(例如git branch -D master)。不能删除HEAD指针。
git branch -D master