HEAD和master的区别

Git中的HEADmaster有什么区别?

我在GitHub上做了一个项目的克隆,想把我的更改推到远程。但我该按哪一个呢?

截图

109743 次浏览

只需推动当前分支的更改

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.


你所看到的是边栏,它表示在GitX项目实验性的GitX叉子中远程回购的所有refspecs。

alt text

HEAD将指定该远程的默认分支 看到git remote set-head手册页: < / p >

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

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

HEAD实际上是一种特殊类型的引用,它指向另一个引用。它可能指向master 也可能不是(它将指向当前签出的分支)。如果你知道你想要提交到master分支,那么推到this。

下面是一个直观的例子:

alt text

在你自己的存储库中,你可以通过运行下面的命令来检查HEAD指向的位置:

$ git symbolic-ref HEAD
refs/heads/master

然而,找出remotes/origin/HEAD指向的位置比较棘手,因为它在远程机器上。

有一个关于git引用在这里的小教程

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

你可以删除master分支(例如git branch -D master)。不能删除HEAD指针。