VisualStudio GIT Не видно дополнительных веток при клонировании проекта

Если вкратце.
Клонировал свой проект через вижуалку, но ветки dev не видно. Куда она делась? Доступна только ветка master :thinking:
А на сайте видно обе ветки

Если клонировать через git clone ... - то же самое - ветки нет :man_shrugging:

хз как студия работает (в GitKraken всё видно, иначе как в GUI её выбрать), но вообще по умолчанию гит не загружает все ветки.
Например git checkout dev
git branch - How to clone all remote branches in Git - Stack Overflow

Это уже читал. Там предлагают много вариантов. Я, конечно, все не пробовал. Которые пробовал - не работает.

Ага. В одном видосе уже нашёл, что так можно.
Но теперь он выдаёт


PS H:\Projects\CSharp 2019\TikTok downloader\TikTok-downloader> git branch -a
* dev
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master

Три последние красным цветом. Это нормально?

Ну это странно, как минимум :man_shrugging:
То есть, ветка скачиваются только когда делаем git checkout ... на эту ветку?
А что будет, если создать и отправить новые коммиты/ветки при нескачанных ветках?

Да.
git branch - What are those red remote branches on Git? - Stack Overflow

By default:

[color "branch"]
    local = yellow
    remote = red
    plain = normal

Что странного? Веток может быть 100500, зачем качать лишние гигабайты зря.

Странно только что студия их не выводит (или куда-то спрятала).

Это как? Коммиты обычно отправляют из текущей ветки в соотв. ветку на сервере.
Перезаписать коммиты одной ветки на сервере коммитами другой ветки можно только с push --force, и на Гитхабе можно запретить такие деструктивные изменения указанных веток (например, основной).

Ну вот есть ветки master, dev, hotfix. git clone скачает только master. Что будет, если я создам и отправлю новую ветку, не скачивая остальные? Или буду обновлять сразу master (так не делают, но всё-равно)?
Или если попытаюсь создать ветку с названием, которое уже есть?

Это где?

Логично. Но тогда должен быть какой-нибудь ключ, с которым скачаются все ветки :man_shrugging: А просто не давать такой возможности - это тупо :man_shrugging:

Он есть частично (pull --all / fetch --all).
Но чтоб именно “скачать все ветки” надо скрипт с циклом типа такого.
Однако почти все из тех, кто это хочет, просто не поняли как гит работает и на самом деле им нужно просто git checkout ...... и git branch -a.
Еще есть --mirror для создания полных копий репозитория (зеркал).

Если в студии сложно работать с ветками, то это проблема студии, а не гита.


Settings → Branches.

checkout же определяет автоматически.
Ну а так говорю ж, при попытке сделать фигню типа замены ветки на сервере другой веткой – не даст если специально не попросить с --force и т.п.

А что не так? Ей и не нужны все ветки, только родитель.

Так делают.
У обоих подходов есть плюсы и минусы.
Git Flow vs. Trunk Based Development | Toptal

А если при создании ветки не делать checkout?

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

Ну вот я и говорю - штатного способа нет :man_shrugging: А это, по-моему, серьёзный недостаток.

Оно качается в сыром виде. Это, вроде, содержимое папки .git (без файлов проекта) :man_shrugging: По-этому, это не то.

А для чего это нужно? Обычно новые фичи добавляют когда это нужно кому-то и текущие решения не устраивают.
Тут явно не тот случай, когда это чем-то помогло бы.
Для зеркал например сделали специальные опции.

Так делают многие, но не все/не везде. Этот подход решает одни проблемы, но добавляет другие. Для разных ситуаций лучше подходят разные подходы.

А как?

убрать галочку
Screenshot
это, вроде, checkout

Это просто создать и не переключаться на нее, остаться в текущей.

То есть, он в любом случае не даст создать ветку повторно?