Что такое ветки?
Представьте работу над крупным проектом с другими программистами. Разные разработчики занимаются разными частями: кто-то — админ-панель, кто-то — регистрацию на сайте. Вы, например, создаёте форум.
Можно создать папку «форум» в основном проекте, но это имеет недостатки:
- Все изменения видны всем. Промежуточные коммиты и файлы видны всем разработчикам.
- Взаимное отвлечение. Разработчики отвлекаются друг на друга.
Ветки решают эти проблемы. Ветка — отдельное ответвление от основного проекта. Изменения внутри ветки видны только тем, кто над ней работает.
Например, разработчики админ-панели создают свою ветку, разработчики форума — свою, и они не мешают друг другу.
Создание и переключение веток
Изначально существует главная ветка master. Для создания новой ветки используйте команду:
git branch <имя_ветки>
Например, для создания ветки forum:
git branch forum
Для переключения на созданную ветку:
git checkout <имя_ветки>
Например, для переключения на ветку forum:
git checkout forum
git status показывает текущую ветку (выделена зелёным цветом). Список всех веток:
git branch -a
Работа с веткой и коммиты
После переключения на ветку forum создадим папку forum, файл index.html в ней и файл forum.main.css в папке css. Добавим изменения в локальный репозиторий:
git add .
И выполним коммит:
git commit -m "Added forum folder"
Объединение веток
После работы над форумом переключимся на master:
git checkout master
Папка forum отсутствует на master, так как изменения из forum не влияют на неё.
Чтобы объединить forum с master:
git merge <имя_ветки>
Например:
git merge forum
Теперь папка forum появится на master. Ветка forum всё ещё существует, но её содержимое интегрировано в master.
Создание и переключение ветки одновременно
Ветку можно создать и переключиться на неё одновременно:
git checkout -b <имя_ветки>
Например:
git checkout -b admin
Эта команда создаст ветку admin и переключит на неё.
Ветки в Git позволяют организовать параллельную разработку, избегая конфликтов и упрощая совместную работу. Объединение веток интегрирует изменения из отдельных веток в основную ветку проекта.