Когда вы бежите, git branch -r
почему это список origin/HEAD
? Например, на GitHub есть удаленное репо, скажем, с двумя ветками: master и awesome-feature. Если я git clone
захвачу его, а затем зайду в свой новый каталог и выведу список ветвей, я увижу это:
$ git branch -r
origin/HEAD
origin/master
origin/awesome-feature
Или в любом другом порядке (альфа? Я подделываю этот пример, чтобы сохранить личность невинного репо в тайне). Так в чем же HEAD
дело? Является ли это то , что последний человек , push
имел их HEAD
заостренные в том, когда они вытолкнули? Разве это не всегда будет тем, чем они были push
? HEAD
s двигаться вокруг ... почему меня волнует, на что кто-то HEAD
указывает на другую машину?
Я просто разбираюсь с удаленным отслеживанием и тому подобным, так что это одна давняя путаница. Спасибо!
РЕДАКТИРОВАТЬ: у меня сложилось впечатление, что выделенные удаленные репозитории (например, GitHub, где никто не будет ssh и работать над этим кодом, но только тянуть или толкать и т. Д.) Не имели и не должны иметь HEAD, потому что, в основном, было нет рабочей копии. Не так?
источник
Ответы:
@robinst правильно.
В git вы можете выбрать, какая ветвь извлекается по умолчанию (например, когда вы клонируете). По умолчанию
origin/HEAD
будет указывать на это.На GitHub Вы можете изменить это в настройках администратора для своего репозитория GitHub. Вы также можете сделать это из командной строки через
или удалить его полностью через
Пример . Посмотрите на выпадающий список «Switch Branches».
trunk
проверяется, поэтомуorigin/HEAD
следуетtrunk
.источник
origin
и мойotherremote/HEAD -> master
беспокоил меня. Запуск вашей команды исправил это для меня.Причина, по которой пустой репозиторий может иметь HEAD, заключается в том, что он определяет, какая ветвь первоначально извлекается после клона репозитория.
Обычно HEAD указывает на master, и это ветвь, которая проверяется, когда люди клонируют репозиторий. Установка его в другую ветку (путем редактирования HEAD в пустом хранилище) приводит к тому, что эта ветвь извлекается на клоне.
источник
origin/HEAD
правильная ли локальная ссылка? Удаляет ли это удалениеorigin
?origin/master
не влияет на пульт.У меня было точно такое же впечатление, как ты сказал.
И я даже не могу удалить эту ветку удаленного слежения origin / HEAD, клонированную из github, выполнив
Это не имело никакого эффекта.
Может кто-нибудь сказать мне, как я могу удалить эту ветку удаленного отслеживания origin / HEAD?
Обновить
Хотя я не нашел, почему при клонировании из github создается origin / HEAD, я нашел способ удалить его.
Новая версия Git обеспечить
удалить бесполезный указатель HEAD ветки удаленного слежения.
И мы также можем изменить тупое имя по умолчанию «origin» на любое, используя
Надеюсь, это поможет. :)
источник
git remote set-head origin -d
Вы правы, что переход к выделенным удаленным репозиториям работает намного лучше, когда они «голые», то есть когда у них нет рабочих каталогов. Архитектура Git предназначена для обновления с помощью патчей или
pull
(fetch
), что имеет смысл в распределенной VCS. Как говорят где-то в документах, нажатие на ветку, которая в настоящий момент извлечена, может привести к «неожиданным результатам» .HEAD является частью требований к действительному хранилищу. Git Repository Layout говорит, частично:
Таким образом, вы увидите HEAD как часть списка веток, даже если «это не много значит ...»
источник
mkdir foobar; cd foobar; git init --bare; cd ..; git clone foobar foobar_clone; cd foobar_clone; touch file; git add file; git config --global user.email "you@example.com"; git config --global user.name "Your Name"; git commit -m "test"; git push origin master; cd ..; cd foobar; git config core.bare
выводит true. Также на этих командах нет рабочей копии помещенного файла в репозитории foobar.mkdir foobar; cd foobar; git init --bare; cd ..; git clone foobar foobar_clone; cd foobar_clone; touch file; git add file; git config user.email "you@example.com"; git config user.name "Your Name"; git commit -m "test"; git push origin master; cd ..; cd foobar; git config core.bare
выводит true. Также на этих командах нет рабочей копии помещенного файла в репозитории foobar.Если «origin» - это удаленный репозиторий, origin / HEAD определяет ветвь по умолчанию в этом удаленном репозитории.
Пример:
Обратите внимание на строку с надписью «HEAD branch: master». Именно здесь удаленный репозиторий позволяет клиентам узнать, какую ветку оформить по умолчанию.
источник
Всегда есть заголовок, который указывает на текущую извлеченную ветку на удаленном репо (которая может быть или не быть главной). Даже удаленные репозитории имеют текущие ветки. Обычно это хозяин, и изо всех сил я не могу придумать причину, почему кто-то хотел бы изменить это, но это можно изменить.
источник
Я предполагаю, что кто-то толкнул ветку и назвал ее ГОЛОВОЙ:
источник