Ветвление

При создании новой функциональности рекомендуется работать с отдельной копией исходного проекта, которая именуется веткой. Каждая ветка ведет свою собственную историю и содержит личные изменения до момента, когда вы решите объединить их. Это делается по нескольким причинам:

  • Сохраняется стабильная и текущая версия кода.
  • Разработка разнообразных функций может вестись одновременно разными командами разработчиков.
  • Программисты могут создавать свои изменения в собственных ветках, не тревожась о том, что кодовая база изменится по чужой инициативе.
  • Если у вас есть сомнения, различные концепции одной и той же задачи могут разрабатываться параллельно и затем оцениваться друг против друга.

1. Создание новой ветки

Основная ветка в любом репозитории обозначена как master. Для создания дополнительной ветки используется команда branch <name>

$ git branch amazing_new_feature

Эта команда сгенерирует новую ветку, которая является полной копией ветки master на начальном этапе.

2. Переключение между ветками

Если сейчас мы выполним branch, то увидим два доступных варианта:

$ git branch
amazing_new_feature
* master

На данный момент активной веткой является master, что обозначается звездочкой. Однако мы стремимся работать с нашей "новой потрясающей фичей", и для этого мы должны переключиться. Используем для этого команду checkout, указывая имя ветки, на которую необходимо перейти.

$ git checkout amazing_new_feature

3. Слияние веток

Наша "потрясающая новая фича" будет представлена как текстовый файл feature.txt. Мы создадим его, добавим и коммитим:

$ git add feature.txt
$ git commit -m "New feature complete.”

После завершения изменений мы можем снова переключиться на ветку master.

$ git checkout master

При открытии проекта в файловом менеджере, мы не увидим feature.txt, так как сейчас находимся в ветке master, где файла еще нет. Чтобы файл стал частью master, нужно использовать merge для слияния изменений из amazing_new_feature с основной версией проекта.

$ git merge amazing_new_feature

Теперь мастер-ветка обновлена. Ветка amazing_new_feature более не нужна и может быть удалена.

$ git branch -d awesome_new_feature

Вопросы для самопроверки:

  1. Что такое ветка в контексте разработки программного обеспечения?
  2. Как обычно называется основная ветка в репозитории?
  3. Какая команда используется для создания новой ветки в Git?
  4. Как узнать, какие ветки в данный момент доступны в проекте?
  5. Какая команда используется для переключения с одной ветки на другую?
  6. Что нужно сделать, чтобы изменения из дополнительной ветки стали частью основной ветки?
  7. Как удалить ветку, которая больше не нужна после слияния?