Что означает git push origin HEAD?

103

Я нашел в официальном руководстве :

git push origin HEAD

Удобный способ перенести текущую ветку с тем же именем на пульте дистанционного управления.

Однако смысл команды мне непонятен. Почему это дает такой эффект?

Я не смог найти ответа ( кажется, этот вопрос решает проблему, но название вводит в заблуждение).

Scristalli
источник

Ответы:

131

HEADуказывает на вершину текущей ветви. gitможно получить название ветки от этого. Так что это то же самое, что:

git push origin CURRENT_BRANCH_NAME

но вам не нужно запоминать / вводить текущее имя ветки. Также это предотвращает случайное нажатие на неправильную удаленную ветку.

Если вы хотите нажать другую ветку, отличную от текущей, команда не будет работать.

hek2mgl
источник
17
Было бы полезно упомянуть, что HEADэто символическая ссылка, и ее можно увидеть с помощью git symbolic-ref HEAD.
John Szakmeister
В чем разница между: git push originи git push origin HEAD?
Maciek
1
@MaciejD git push origin без указания имени ветки не работает. либо вы добавляете имя ветки, либо говорите HEAD, имея в виду текущую ветку, в которой вы находитесь
Schwarzie2478
2
На самом деле git push originэто действительная команда. Если для push.defaultпараметра конфигурации Git установлено значение, nothingто git push origin«ничего не будет выталкивать (ошибка)» в соответствии с man git-config. Но другие push.defaultнастройки имеют другое поведение. Искать push.defaultв man git-config. Также ищите «Когда в командной строке не указано, куда нажимать» и «Когда в командной строке не указывается, что нажимать» в разделе описания вверху man git-push(это man git-pushне так man git-config).
Дэвид Винецки