Что определяет ветку по умолчанию при клонировании из git голого репозитория

Я пытаюсь изменить ветвь по умолчанию при клонировании из git голого репо с использованием git 1.8.3.1 из yum install. Я всегда предполагал, что способ сделать это - изменить ссылку внутри файла HEAD удаленного репо, и несколько SO-ответов, похоже, подтверждают это.

Однако, я нахожу значение HEAD в удаленном голом репо, чтобы не иметь никакого эффекта. Хотя мой удаленный репо имеет это значение в HEAD:

ref: refs/heads/secondbranch

Я все еще дефолтован на ветку firstbranch, когда я клонирую! Любые идеи, что здесь происходит? Где еще можно сохранить эту информацию?

Ответы

Ответ 1

Старые версии git не отправляют "ветвь по умолчанию" при извлечении и клонировании. Вместо этого они отправляют идентификатор объекта текущей ссылки HEAD, а также идентификатор объекта других ссылок. Если идентификатор объекта HEAD совпадает с идентификатором объекта другой ссылки, он будет устанавливать HEAD для указания этой ссылки. (Если совпадения не было, вы будете находиться в состоянии автономного состояния HEAD.)

Логика неоднозначности нечеткая, хотя, если у вас несколько ветвей, указывающих на одну и ту же фиксацию. Он предпочтет ветку с именем master, затем она просто выберет ту, которую она увидела первой.

Перестань смеяться, я серьезно.

Это было исправлено в Git 1.8.4.3.