Создание и переключение веток
Учимся создавать ветки, прыгать между ними современной командой switch и наводить порядок.
Список и создание веток
Посмотреть все ветки и отметить текущую звёздочкой:
git branchВывод:
* main develop
Создать новую ветку (она ответвится от текущего коммита, но вы останетесь на месте):
git branch feature-loginПереключение: switch против checkout
Исторически для переключения использовали git checkout. Но эта команда перегружена — она делает слишком много разного. Поэтому в современном git появились две специализированные команды: git switch (для веток) и git restore (для файлов). Им и стоит отдавать предпочтение.
git switch feature-loginВывод:
Switched to branch 'feature-login'
Создать ветку и сразу переключиться на неё — самый частый сценарий — флагом -c (от create):
git switch -c feature-searchТе же действия старым синтаксисом (полезно узнавать в чужих инструкциях):
git checkout feature-login # переключиться
git checkout -b feature-search # создать и переключиться| Задача | Современно | Старый способ |
| Переключиться | git switch X | git checkout X |
| Создать и переключиться | git switch -c X | git checkout -b X |
Вернуться на предыдущую ветку
Прыгнуть на ветку, где вы были до этого, можно через дефис:
git switch -Удаление веток
Когда ветка влита и больше не нужна, её удаляют:
git branch -d feature-login # безопасно: только если ветка уже слита
git branch -D feature-login # принудительно, даже если не слитаИспользуйте строчную -d — она убережёт от потери несохранённой работы, отказавшись удалять неслитую ветку. Заглавная -D удаляет без вопросов, поэтому применяйте её осознанно.
Переименование
git branch -m staroe-imya novoe-imyaЧто под капотом у переключения
Когда вы выполняете git switch, происходит сразу три вещи: указатель HEAD переезжает на новую ветку, а файлы в рабочей директории заменяются на состояние, соответствующее её последнему коммиту. Поэтому после переключения вы буквально видите другой набор файлов. Это не «удаление» вашей прошлой работы — она надёжно лежит в коммитах своей ветки и вернётся, как только вы переключитесь обратно.
Незакоммиченные изменения мешают переключению
Важный нюанс: если у вас есть незакоммиченные изменения, которые конфликтуют с целевой веткой, git откажется переключаться, чтобы не потерять вашу работу. У вас два выхода: либо закоммитить изменения, либо временно отложить их командой git stash (о ней — в шестом разделе). Это защитный механизм, а не ошибка.
Обнаружение «detached HEAD»
Если переключиться не на ветку, а прямо на коммит по его хешу, git перейдёт в состояние «detached HEAD» — вы стоите на коммите без ветки. Это нормально для разовых просмотров истории, но коммиты, сделанные в таком состоянии, легко потерять. Поэтому для работы всегда создавайте ветку.
Итог
git switch X— переключиться,git switch -c X— создать и переключиться.- Старый эквивалент —
git checkout/checkout -b. git branch -dудаляет слитую ветку безопасно,-D— принудительно.