Урок #4 Git Ветвление - Создание новой ветки репозитория
Primary tabs
Зачем нужны ветки
До сих пор мы работали с одной линией истории — основной веткой (обычно она называется master или main). Ветка — это независимая "линия разработки" репозитория: свои коммиты, своя версия файлов.
Ветки нужны, чтобы работать над несколькими вариантами проекта параллельно и не мешать друг другу, например:
- поэкспериментировать с новой идеей, не рискуя основной (рабочей) версией;
- готовить крупное изменение в стороне, пока основная ветка продолжает жить своей жизнью;
- двум разработчикам вести работу над разными задачами одновременно.
Как узнать, на какой ветке вы находитесь
Список всех веток показывает команда:
git branch
Текущая ветка отмечена звёздочкой:
* master
(Как и в уроке #2: имя может быть master или main — в зависимости от версии git и настроек.)
Создаём новую ветку
Чтобы создать новую ветку (ответвиться от той, на которой вы сейчас находитесь), используйте команду git checkout с флагом -b:
git checkout -b имяНовойВетки
Например:
git checkout -b feature/add-greeting
Git сразу переключит вас на новую ветку и сообщит об этом:
Switched to a new branch 'feature/add-greeting'
После этого можно, как обычно, выполнить команду:
git status
— в первой строке ответа будет видно, что вы теперь на новой ветке: On branch feature/add-greeting.
Есть и отдельная команда, которая только создаёт ветку, но не переключается на неё:
git branch имяНовойВетки
Но на практике удобнее вариант с checkout -b: создать и сразу оказаться в новой ветке.
Как называть ветки: латиницей, без пробелов, коротко и осмысленно — обычно через дефис или слэш указывают суть изменения, например feature/add-search, fix/wrong-sum.
Переключаемся между ветками
Вернуться на уже существующую ветку можно той же командой git checkout, но без флага -b:
git checkout master
В новых версиях git для переключения есть и отдельная команда:
git switch имяВетки
(а git switch -c имяВетки — создать и переключиться, как checkout -b).
Практика: изменения в ветке не видны в основной
Практика этого раздела опирается на урок #2, где мы создали в репозитории файл hello.txt и научились добавлять изменения и фиксировать их. Если вы ещё не выполняли практику оттуда — сделайте это, а затем возвращайтесь.
Итак, продолжим работу с файлом hello.txt. Создадим ветку для эксперимента и сделаем в ней коммит:
git checkout -b experiment echo "Новая идея" >> hello.txt git add hello.txt git commit -m "Пробуем новую идею"
А теперь вернёмся на основную ветку и посмотрим на файл:
git checkout master cat hello.txt # строки "Новая идея" здесь нет!
Вернёмся обратно в экспериментальную ветку:
git checkout experiment cat hello.txt # а здесь строка на месте
Вот и вся суть ветвления: каждая ветка живёт своей жизнью, и изменения в одной из них не затрагивают остальные. После создания ветки можно вносить изменения в файлы репозитория и фиксировать их как обычно (см. урок #2), а когда ветка будет готова — публиковать её во внешний репозиторий (см. урок #3). Объединение изменений из двух веток (слияние, merge) — тема отдельного урока.
Как ветки выглядят в истории
Увидеть ветвление прямо в истории можно так:
git log --oneline --graph
Коммит ответвления и коммит основной ветки будут показаны как расходящиеся "линии" истории.
Итого
git branch— список веток (звёздочка — где вы сейчас),git branch имя— только создать ветку;git checkout -b имя— создать ветку и сразу переключиться на неё;git checkout имя(илиgit switch имя) — переключиться на существующую ветку;- изменения, сделанные в одной ветке, не видны в других — пока ветки не объединены.
- Log in to post comments
- 1083 reads