Что такое ветки?
Ветка -- это независимая линия разработки. Она позволяет работать над функциональностью, исправлением ошибки или экспериментом, не затрагивая основную кодовую базу.
Общая картина
Думайте о ветках как о параллельных временных линиях:
main: A --- B --- C
\
feature: D --- E
mainпродолжает развиваться с коммитомCfeatureответвилась отBи имеет свои собственные коммитыDиE- Они не мешают друг другу
Зачем использовать ветки?
Изоляция -- Работайте над функциональностью, не ломая main. Если эксперимент не удался, просто удалите ветку.
Совместная работа -- Несколько разработчиков работают над разными ветками одновременно, а затем объединяют результаты, когда всё готово.
Код-ревью -- Создайте ветку, отправьте её и откройте пулл-реквест, чтобы другие могли проверить код перед слиянием.
Как ветки работают внутри
Ветка -- это просто указатель на коммит. Вот и всё. Создание ветки не копирует никакие файлы -- оно просто создаёт новый указатель.
main ──→ commit C
feature ──→ commit E
HEAD ──→ feature (вы сейчас на ветке "feature")
HEAD-- это специальный указатель, который отслеживает, на какой ветке вы сейчас находитесь- Когда вы делаете коммит, указатель текущей ветки перемещается вперёд
- Когда вы переключаете ветки,
HEADперемещается на другую ветку
Ветка по умолчанию
Когда вы выполняете git init, Git создаёт ветку по умолчанию с именем main (или master в старых версиях). Это просто соглашение -- технически в ней нет ничего особенного.
Типичный рабочий процесс с ветками
- Создайте ветку:
git branch feature - Переключитесь на неё:
git checkout feature - Делайте коммиты в ветке
- Вернитесь обратно:
git checkout main - Объедините работу:
git merge feature - Удалите ветку:
git branch -d feature
В следующих уроках вы попрактикуете каждый из этих шагов.