Git: объединить ветку с мастером

Одна из самых мощных функций Git - это возможность легко создавать и объединять ветки. Распределенный характер Git побуждает пользователей часто создавать новые ветки и регулярно объединять их в рамках процесса разработки. Это существенно улучшает рабочий процесс разработки для большинства проектов, поощряя более мелкие, более сфокусированные и детализированные коммиты. В устаревших системах контроля версий (таких как CVS) сложность слияния ограничивалась только опытными пользователями. Другая современная, но централизованная версия contro

Одна из самых мощных функций Git - это возможность легко создавать и объединять ветки. Распределенный характер Git побуждает пользователей часто создавать новые ветки и регулярно объединять их в рамках процесса разработки. Это существенно улучшает рабочий процесс разработки для большинства проектов, поощряя более мелкие, более сфокусированные и детализированные коммиты.

В устаревших системах контроля версий (таких как CVS) сложность слияния ограничивалась только опытными пользователями. Другие современные, но централизованные системы контроля версий, такие как Subversion, требуют, чтобы коммиты выполнялись в центральном репозитории, поэтому гибкий рабочий процесс с локальным ветвлением и слиянием нетипичен.

Обычно используемый рабочий процесс ветвления в Git - это создание новой ветки кода для каждой новой функции, исправления ошибок или улучшения. Они называются функциональными ветвями. Каждая ветвь разделяет коммиты, относящиеся к определенной функции. Как только новая функция будет завершена - то есть набор изменений был зафиксирован в ветви функции - она готова к слиянию обратно в основную ветвь (или другую ветвь основной строки кода в зависимости от используемого рабочего процесса).

Команда git branch используется для вывода списка всех существующих веток в репозитории. Звездочка появится рядом с активной в данный момент веткой.

 $ git branch 
 * master 

Чтобы создать новую ветку, мы можем использовать команду git branch new-branch . Это создаст новую ветку, отражающую коммиты текущей активной ветки.

 $ git branch new-branch 
 $ git branch 
 * master 
 new-branch 

Вкратце, имейте в виду, что за кулисами Git фактически не создает новый набор коммитов для представления новой ветки. В Git ветка - это просто тег. Это метка, которую мы можем использовать для ссылки на конкретную строку коммитов. Было бы неэффективно дублировать набор коммитов за кулисами, поэтому Git позволяет нам создавать несколько расходящихся наборов коммитов из одной базы.

На этом этапе мы создали новую ветку, но по-прежнему находимся в исходной ветке. Чтобы начать работу над новой веткой, нам сначала нужно запустить команду git checkout new-branch . Это изменит активную ветвь на новую ветку.

 $ git checkout new-branch 
 Switched to branch ‘new-branch' 
 $ git branch 
 master 
 * new-branch 

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

Сначала мы запускаем git checkout master чтобы снова изменить активную ветку на master. Затем мы запускаем команду git merge new-branch чтобы объединить новую функцию с основной веткой. Обратите внимание, что git merge объединяет указанную ветку в текущую активную ветвь. Итак, нам нужно быть в той ветке, в которую мы сливаемся .

 # ...develop some code... 
 
 $ git add –A 
 $ git commit –m "Some commit message" 
 $ git checkout master 
 Switched to branch 'master' 
 $ git merge new-branch 

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

Подводя итог, вот команды для создания новой ветки, выполнения некоторых коммитов и слияния ее обратно в мастер:

 $ git checkout master 
 $ git branch new-branch 
 $ git checkout new-branch 
 
 # ...develop some code... 
 
 $ git add –A 
 $ git commit –m "Some commit message" 
 $ git checkout master 
 $ git merge new-branch 

об авторе

Эта статья была написана Якобом Стопаком, консультантом по программному обеспечению и разработчиком, стремящимся помочь другим улучшить свою жизнь с помощью кода. Джейкоб является создателем Initial Commit - сайта, посвященного тому, чтобы помочь любознательным разработчикам узнать, как написаны их любимые программы. Его избранный проект помогает людям изучать Git на уровне кода.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus