Difference between HEAD and master

∥☆過路亽.° 提交于 2019-12-17 17:19:07

问题


What is the difference between the HEAD and master in Git?

I did a clone of a project on GitHub and want to push my changes to the remote. But to which one should I push?


回答1:


master is a reference to the end of a branch. By convention (and by default) this is usually the main integration branch, but it doesn't have to be.

HEAD is actually a special type of reference that points to another reference. It may point to master or it may not (it will point to whichever branch is currently checked out). If you know you want to be committing to the master branch then push to this.

Here is a visual example:

On your own repository you can check where the HEAD is pointing to by running this:

$ git symbolic-ref HEAD
refs/heads/master

However, finding out where the remotes/origin/HEAD is pointing to is more tricky because it is on the remote machine.

There is a great little tutorial on git references here:

http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1




回答2:


The simple answer is that HEAD is a pointer/label to the most recent commit of the branch you are currently on. master is the default branch created when you initialized a git repository (e.g. git init).

You can delete the master branch (e.g. git branch -D master). You cannot delete the HEAD pointer.




回答3:


Simply push the changes of your current branch

git push origin

and it will push your branch 'B' changes to 'origin/B'.
If you are on your master branch, git will push to origin/master.
Actually it will push all changes on the local branches that have matching remote branches at origin. It is controlled by the config setting push.default.
See also pushing RefSpecs in the Pro Git book.


What you are seeing is the sidebar representing all the refspecs of your remote repo in the Experimental GitX fork of the GitX project.

The HEAD will designate the default branch for that remote.
See git remote set-head man page:

Having a default branch for a remote is not required, but allows the name of the remote to be specified in lieu of a specific branch.
For example, if the default branch for origin is set to master, then origin may be specified wherever you would normally specify origin/master.



来源:https://stackoverflow.com/questions/4386959/difference-between-head-and-master

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!