Как создать новую ветку в git и сразу переключиться на неё?
Начинаю новую фичу и хочу создать ветку и перейти в неё одной командой. Видел и checkout -b, и какой-то switch. В чём разница и что использовать сейчас?
2 ответа
Есть два рабочих способа — старый и новый, оба создают ветку и сразу переключают на неё.
Современный способ (git 2.23+) — команда switch:
git switch -c new-feature
Флаг -c означает create. Понятно и без сюрпризов.
Классический способ, который работает везде, — checkout -b:
git checkout -b new-feature
Обе команды делают одно и то же: создают ветку new-feature от текущего коммита и переключают на неё.
Если ветка уже существует и нужно просто перейти:
git switch new-feature
или по-старому:
git checkout new-feature
Посмотреть список веток и понять, где ты находишься:
git branch
Звёздочка * отметит текущую ветку.
Частая ошибка: забыть флаг -c/-b при создании. git switch new-feature (без -c) попытается переключиться на ветку, которой нет, и выдаст ошибку «ветка не найдена». Чтобы именно создать — нужен -c (или -b для checkout).
Зачем ввели switch, если был checkout? Потому что checkout делал слишком много разных вещей (и ветки, и откат файлов), новичков это путало. В git 2.23 его разбили на два понятных инструмента:
git switch— переключение и создание веток.git restore— откат файлов.
Если версия git свежая, привыкай к switch/restore — так понятнее.