git switch -- Современный способ переключения веток
В Git 2.23 появилась команда git switch как более понятная альтернатива git checkout для переключения веток. В то время как checkout делает много вещей (переключает ветки, восстанавливает файлы, отделяет HEAD), switch делает одну вещь: переключает ветки.
Переключение веток
git switch feature
Это эквивалентно git checkout feature, но намерение понятнее.
Создание и переключение в одно действие
git switch -c new-feature
Флаг -c создаёт ветку и переключается на неё. Это замена для git checkout -b.
Переключение на предыдущую ветку
git switch -
Дефис означает "ветка, на которой я был до этого" -- удобно для переключения между двумя ветками.
Создание ветки от конкретной начальной точки
git switch -c bugfix main
Это создаёт ветку bugfix, начиная от вершины main, независимо от того, на какой ветке вы сейчас находитесь.
Почему стоит использовать switch вместо checkout?
git checkout перегружена -- она делает слишком много разных вещей:
| Команда | Что она делает |
|---|---|
git checkout feature | Переключение на ветку |
git checkout -- file.txt | Восстановление файла (отмена изменений) |
git checkout abc1234 | Отделение HEAD на коммите |
Это может сбивать с толку и даже быть опасным. git switch и git restore разделяют эти обязанности:
git switch-- только для переключения ветокgit restore-- только для восстановления файлов
Попробуйте!
Потренируйтесь использовать git switch для операций с ветками:
- Создайте файл и сделайте коммит:
echo "start" > app.txt, затемgit add app.txt, затемgit commit -m "Initial commit" - Создайте и переключитесь на новую ветку:
git switch -c feature - Убедитесь, что вы на новой ветке:
git branch - Сделайте коммит:
echo "feature work" >> app.txt, затемgit add app.txt, затемgit commit -m "Add feature work" - Вернитесь на main:
git switch main - Переключитесь обратно на feature:
git switch - - Снова переключитесь на main:
git switch main - Создайте ветку от конкретной точки:
git switch -c hotfix feature - Проверьте лог:
git log --oneline-- вы должны увидеть коммит feature, потому чтоhotfixначался отfeature
Ключевая идея
git switch и git checkout выполняют одну и ту же задачу по переключению веток. Если вы изучаете Git с нуля, предпочитайте git switch -- она проще и безопаснее. Если вы уже используете checkout по привычке, это тоже нормально. Обе команды будут поддерживаться в обозримом будущем.