Git中的HEAD
和有什么区别?master
我在 GitHub 上克隆了一个项目,并希望将我的更改推送到远程。但我应该推到哪一个?
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
简单的答案是HEAD
指向您当前所在分支的最新提交的指针/标签。master
是初始化 git 存储库时创建的默认分支(例如git init
)。
您可以删除master
分支(例如git branch -D master
)。您不能删除HEAD
指针。
只需推送当前分支的更改
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
。