Разница между HEAD и ведущим

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

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

screenshot

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

git push origin

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


Что вы видите, это боковая панель, представляющая все refspecs вашего удаленного репо в Экспериментальная вилка GitX проект GitX.

alt text

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

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