в удаленный репе много модулей в которых дефолтный бранч может случайно поменяться
как в локальной копии пробежаться и переключить все бранчи как в удаленный ?
можно конечно каждый раз удалять и клонить всю репу опять
но как то кисло
есть вариант в линуксе
git submodule foreach git checkout $(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')
хочется чего то по проще в винде
где не надо лезть парсить итд
что то элегантное и красивое можно сообразить ?
Здравствуйте, reversecode, Вы писали:
R>что то элегантное и красивое можно сообразить ?
Подписался бы на ответы, но почта не работает.
Сам, не придумав ничего другого, пишу правило в Makefile для подобной задачи.
Разве это не задача хозяина репозитория (к которому подключены субмодули) корректно прописать submodule.<name>.branch ?
Или не прописывать, тогда она на remote HEAD и так указывает.
https://git-scm.com/docs/gitmodules#Documentation/gitmodules.txt-submoduleltnamegtbranch
submodule.<name>.branch
A remote branch name for tracking updates in the upstream submodule. If the option is not specified, it defaults to the remote HEAD.
A special value of . is used to indicate that the name of the branch in the submodule should be the same name as the current branch in the current repository.
See the --remote documentation in git-submodule[1] for details.
По приведенному варианту — можно убрать sed:
git submodule foreach git checkout -b `git for-each-ref refs/remotes/origin/HEAD --format='%(symref:lstrip=3)'`
они там игрались в разных версиях гита с опциями кажется --track в pull если не ошибаюсь
типа там трекать изменившийся дефолт бранч с ремоута или не трекать
в итоге после многих лет апдейта репы через обычный pull и submodule update с разными полезными опциями типа --remote
я вчера обнаружил что у меня сабмодули в репе вообще в непонятном состоянии
при том что
git remote set-head origin --auto
показывает правильно
но команды которая бы после этого смогла вернуть дефолтный бранч я так и не нашел
тот же git pull после той команды не переключает его
можно конечно вручную это один раз сделать, пройтись по всем саб модулям их там за 100 штук
или попробовать склонировать по новой, хотя трафика многовато будет
но подумалось что это распространенная проблема
и нагугли такую линку
https://rnelson0.com/2020/11/24/dealing-with-changes-to-git-default-branches/
но для винды это слишком накладно
в принципе на коленке я уже решил
но захотелось узнать нет ли более элегантного решения
от профи гита