Разница между головой и мастером - PullRequest
162 голосов
/ 08 декабря 2010

В чем разница между HEAD и master в Git?

Я сделал клон проекта на GitHub и хочу перенести свои изменения на пульт. Но куда мне толкать?

screenshot

Ответы [ 3 ]

144 голосов
/ 08 декабря 2010

master - ссылка на конец ветви.По соглашению (и по умолчанию) обычно это основная ветвь интеграции, но это не обязательно.

HEAD на самом деле является специальным типом ссылки, которая указывает на другую ссылку.Это может указывать на master или может не (оно будет указывать на то, какая ветвь в данный момент извлечена).Если вы знаете, что хотите совершить переход в ветку master, нажмите на нее.

Вот наглядный пример:

alt text

В вашем собственном хранилищеВы можете проверить, куда указывает 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

31 голосов
/ 24 сентября 2015

Простой ответ заключается в том, что HEAD - это указатель / метка для самого последнего коммита ветки, в которой вы сейчас находитесь.master - это ветвь по умолчанию, созданная при инициализации репозитория git (например, git init).

Вы можете удалить ветку master (например, git branch -D master).Вы не можете удалить указатель HEAD.

8 голосов
/ 08 декабря 2010

Просто нажмите на изменения вашей текущей ветви

git push origin

, и ваша ветка 'B' изменится на 'origin/B'.
Если вы находитесь на masterветка, git будет выдавать origin/master.
На самом деле она будет толкать все изменения в локальных ветвях, которые имеют соответствующие удаленные ветки, в origin.Он управляется настройкой конфигурации push.default .
См. Также push RefSpecs в книге Pro Git .


Вы видите боковую панель, представляющую все refspecs вашего удаленного репо в Experimental GitX fork GitX проекта .

alt text

HEAD обозначает ветвь по умолчанию для этого пульта.
См. git remote set-head справочную страницу :

Наличие ветки по умолчанию для пульта нетребуется, но позволяет указать имя удаленного вместо конкретной ветви.
Например, если для ветви по умолчанию для origin установлено значение master, тогда origin может быть указано везде, где вы хотитеобычно укажите origin/master.

...