На самом деле, вам даже (всегда) не нужна опция --create
при создании новой ветви с git switch
:
, если эта ветвь соответствует удаленной, отслеживающей,он создаст локальную ветвь и автоматически отследит удаленную!
То есть достаточно простого git switch <branch>
.
Если <branch>
не найдено, но существуетотслеживание ветви только на одном пульте (назовите его <remote>
) с соответствующим именем, обрабатывайте как эквивалентное:
$ git switch -c <branch> --track <remote>/<branch>
Если филиал существует в нескольких удаленных пунктах, и один из них являетсяназванный переменной конфигурации checkout.defaultRemote
, мы будем использовать его для устранения неоднозначности, даже если <branch>
не уникален для всех удаленных устройств.
Установите его, например, checkout.defaultRemote=origin
, чтобы всегда извлекать удаленные ветвиоттуда, если <branch>
является неоднозначным, но существует на пульте origin
.
См. также checkout.defaultRemote
in git config
.
Plus, если вы переключитепо ошибке в удаленную ветку отслеживания происходит сбой (в отличие от git checkout
, чтосъел отсоединенную ГОЛОВУ от указанной удаленной ветви!)
git switch origin/master
fatal: a branch is expected, got remote branch 'origin/master'
Vs.
git checkout origin/master
Note: switching to 'origin/master'.
You are in 'detached HEAD' state