200

Git中的HEAD和有什么区别?master

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

截屏

4

3 回答 3

173

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

于 2010-12-08T12:27:42.837 回答
46

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

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

于 2015-09-24T15:24:57.407 回答
8

只需推送当前分支的更改

git push origin

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


您所看到的是侧边栏,它代表了GitX 项目的Experimental GitX fork中远程 repo 的所有 refspecs 。

替代文字

HEAD为该远程指定默认分支。
请参阅git remote set-head手册页

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

于 2010-12-08T11:48:11.033 回答