И так у меня была репа фрибсд, скаченная 3 года назад в виде одной ветки main
(да, там тоже не master, а ещё про этот --single-branch
я забыл), и захотел я подгрузить к ней актуальные изменения, а так же релизные ветки 13.5 и 14.3. С первым всё получилось (git pull
), скачал он объектов примерно на полгига и всё обновил.
Потом я сделал git checkout releng/13.5
- пишет нет ветки. Сделал git pull origin releng/13.5
- он долго-долго качал ещё гигабайт объектов (почему? почти всё уже скачано было раньше должно бы быть), потом начал какой-то дурацкий мерж, выдал кучу ошибок и упал. Ветка releng/13.5
нигде не появилась, ни в refs/heads и в refs/remotes/origin. Вобщем, репа оказалась в каком-то забагованном состоянии, но git reset --hard
починил её, а потом ещё пришлось вручную rm всякий мусор от упавшего мержа. Хорошо, выяснил что pull не для этого, сделал git fetch origin releng/13.5
- он ничего не делает как будто всё и так норм. Сделал git fetch origin releng/14.3
- он скачал ветку (на этот раз быстро и малым объёмом), но ни в каких списках она опять не появилась.
Вобщем, оказалось что надо лезть в .git/config
и в конфиге [remote "origin"]
заменить main на звёздочки, иначе он делает вид что остальных веток не существует, даже если я напрямую его инструктирую их скачивать. Хорошо хоть качать заново не пришлось.
Если что, после правки конфига надо было ввести такие команды:
git fetch origin releng/13.5 # прописать ветку в remotes
git checkout -b releng/13.5 origin/releng/13.5 # склонировать её в локальные
git fetch origin releng/14.3
git checkout -b releng/14.3 origin/releng/14.3
Ладно, отказ создавать ветки можно понять (в конфиге запрещены), но почему он делает это молча и изображая что всё успешно получилось? Мог бы ошибку написать что конфиг не разрешает эти ветки трогать, например, я бы сразу понял в чём дело и исправил. а так же плохо с его стороны было качать кучу объектов, которые, в соответствии с конфигом, ему нужны быть не могут - опять же надо было сразу выдать ошибку и ничего не делать. И до сих пор непонятно - если я хочу ограничить работу, но не одной веткой а тремя - это возможно?