Как объединить ветки слиянием в Git

Если вы используете Git для управления исходным кодом, возможно, вам придётся объединить различные ветки разработки проекта в одну ветку. В этой статье будет описано, как объединить две ветки разработки с помощью команды слияния Git.

Мы покажем вам, как создать проект Git, создать различные ветки и объединить одну ветку с другой. Кроме того, вы узнаете, что такое быстрое слияние и 3-х стороннее слияние, а также как объединить ветку с удаленным репозиторием.

Реклама

Что такое слияние Git?

Git – популярный инструмент DevOps, который разработчики могут использовать для отслеживания и управления изменениями в коде, написанном различными группами. С помощью команды слияния Git вы можете взять вашу текущую ветку разработки (которую вы создали из основной ветки) и объединить изменения кода обратно в основную ветку.

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

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

Как объединить две ветки Git с помощью объединения Git

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

Реклама

Предварительные условия

Для начала вам понадобятся следующие элементы:

Давайте быстро пройдемся по различным шагам, необходимым для установки Git на компьютере под управлением Windows (у нас также есть отдельное руководство о как установить Git на Ubuntu):

  • Перейдите по ссылке, чтобы скачать Git для вашего компьютера и установить файлы.
  • После установки откройте терминал и введите git –version:
git –version

Если вы получили номер версии, отлично! Однако, если вы получили сообщение “команда не найдена”, то вам может потребоваться добавить Git в вашу переменную $PATH. Обычно это проблема Windows.

Давайте быстро исправим это, чтобы вам не пришлось снова искать.

Реклама

  • Перейдите на панель Start и щелкните правой кнопкой мыши на Этот компьютер.
  • Выберите Свойства.
  • Щелкните Дополнительные параметры системы.
  • В разделе Свойства системы нажмите Переменные среды. Здесь вы можете добавить значения в переменную $PATH.
  • Выберите $PATH и нажмите Изменить.
  • Нажмите Новый и добавьте путь к git/cmd.
  • Нажмите Новый и добавьте путь к файлу git.exe.

Сохраните изменения, вернитесь в терминал и снова выполните команду git -version.

git -version

Теперь вы должны получить возвращенный номер версии. После выполнения предварительной работы и настройки вашей учетной записи GitHub или Gitlab вы готовы к работе.

Создание проекта Git

В этом разделе я проведу вас через различные шаги, необходимые для создания нового репозитория.

На вашей недавно созданной учетной записи Github нажмите Новый в левой части экрана.

Затем вам нужно будет дать вашему репозиторию имя и заполнить несколько других деталей. Дайте ему краткое описание, если хотите, сделайте его общедоступным, и хорошей практикой является всегда добавлять файл ReadMe. После завершения нажмите Создать репозиторий.

Теперь, чтобы начать работу в вашем редакторе кода, вам нужно склонировать ваш новый репозиторий, нажав кнопку Клонировать. Выберите HTTPS, скопируйте адрес и откройте ваш терминал.

В вашем терминале используйте команду cd, чтобы выбрать место, где вы хотите создать новый каталог для вашего проекта.

cd user/desktop/repo/

Когда вы находитесь в правильной ветке, используйте команду mkdir для создания нового каталога:

mkdir <name of your directory>

Теперь снова используем команду cd, чтобы перейти в этот недавно созданный каталог:

 cd <name of your newly created directory> 

После этого, используйте команду git init для создания нового репозитория:

git init

Далее, используйте команду git clone с правильным HTTPS-адресом и нажмите Enter. По умолчанию это создаст основную ветку в вашем локальном репозитории.

git clone <paste https address here>

Теперь откройте ваш недавно клонированный репозиторий в Visual Studio Code. Теперь вы можете начинать писать код.

После создания вашего репозитория, вы уже будете находиться в основной ветке. В качестве лучшей практики, никогда не следует непосредственно загружать код в основную ветку, которая должна быть защищена.

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

Создание другой ветки Git

Сейчас мы находимся в основной ветке, где вы что-то написали, и теперь вы хотите создать новую ветку.

В вашем терминале используйте команду git checkout, чтобы создать новую ветку и автоматически переключиться на нее:

git checkout -b <name of new branch>

Эта команда должна автоматически отделить эту новую ветку от вашей основной ветки, поэтому код последней не должен измениться.

Теперь самое интересное – мы сможем использовать команду git merge. На вашей только что созданной ветке сначала нужно добавить больше кода, чтобы ваш текущий код опередил основную ветку с какими-то новыми изменениями.

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

Итак, что же ты делаешь? Давай посмотрим, как объединить одну ветку с другой.

Объединение ваших двух веток Git в локальном репозитории

Когда вы находитесь на вашей новой ветке, перейдите к терминалу и используйте команду git branch, чтобы проверить имя ветки, на которой вы находитесь:

git branch

Теперь вы на вашей новой ветке, используйте команду git checkout снова, чтобы переключиться на основную ветку:

git checkout Main

Затем используйте команду git pull, чтобы импортировать изменения, которые могли сделать ваши товарищи, и обновить вашу локальную основную ветку:

git pull

Теперь используйте git checkout снова, чтобы переключиться на новую ветку, которую вы хотите объединить с основной веткой:

git checkout <your specified branch>

Пришло время использовать команду git merge. Это позволит взять текущую версию вашей основной ветки и затем объединить её с вашей веткой разработки:

git merge Main

Результат слияния будет иметь последнюю версию кода плюс функцию, которую вы разработали.

Другие способы объединения веток Git

После того, как мы показали, как объединить новую ветку с нашей основной веткой, давайте рассмотрим другие способы объединения веток Git, которые вам могут потребоваться.

Что такое слияние с быстрым перемещением?

A fast-forward merge is another way to merge multiple commits on one branch with one command rather than merging them all manually. Another advantage of using a fast-forward merge is that it will combine the histories of multiple commits while squashing the commit history.

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

В нашем примере мы начнем с написания кода и добавления нового коммита в нашу ветку с помощью команд git add и git commit:

git add <filename>
git commit –m “added a thing”

Теперь мы добавим еще один коммит в нашу новую ветку, используя те же команды снова:

git add <filename>
git commit –m “added another thing”

Далее мы хотим отправить эти два коммита в наш удаленный репозиторий, не выполняя двух операций push. Для этого нам нужно использовать ключ -ff в команде git merge

git merge --ff

Это позволит объединить оба коммита одновременно и догнать ваш код до главной ветки.

Что такое 3-way merge?

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

Для того чтобы убедиться, что новые функции работают корректно вместе, хорошей идеей будет объединить ветки функций друг с другом, после чего провести тестирование. 3-way merge позволит нам объединить две отдельные ветки с их общим предком.

Давайте пройдемся по шагам, необходимым для выполнения трехстороннего слияния с целевой веткой. В приведенном ниже примере мы начнем с создания новой ветки, добавим два коммита в нее, а затем объединим ее с основной веткой с помощью трехстороннего слияния.

Сначала давайте начнем с создания ветки ‘new-feature’ и автоматического переключения на нее с помощью команды git checkout. Указание параметра -b с этой командой приводит к созданию новой ветки:

git checkout -b new-feature main

Затем мы добавляем некоторые файлы и новый коммит в нашу ветку с помощью следующих команд:

git add <file>
git commit -m "Start a feature"

Затем мы добавляем еще один коммит в нашу новую ветку с помощью следующих команд:

git add <file>
git commit -m "Finish a feature"

После того, как мы добавили новый код в нашу новую ветку, представьте себе ситуацию, когда наша основная ветка также продолжает развиваться. Сначала мы переключимся обратно на нее с помощью команды git checkout:

git checkout main

Затем мы добавим новый коммит в нашу основную ветку:

git add <file>
git commit -m "make some changes to Main"

Теперь мы хотим объединить ранее созданную ветку ‘new-feature’ с обновленной основной веткой. Поскольку работа будет продолжаться на основной ветке, мы завершим, удалив ветку ‘new-feature’ с помощью команды git branch.

git merge new-feature
git branch -d new-feature 

Теперь мы объединили наши две ветки с общим предком в основную ветку. Последняя готова быть объединенной с вашим удаленным репозиторием и дальнейшим увеличением нашего программного проекта, и мы увидим, как это сделать дальше.

Как объединить ветку Git с удаленным репозиторием

Иногда вам может потребоваться объединить ветвь в удаленный репозиторий. Давайте пройдем по шагам, как это сделать.

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

Как упоминалось ранее, никогда нельзя прямо отправлять свой код в основную ветвь. Вам всегда нужно уважать рабочий процесс Git, который мы подробно рассмотрели в начале данного руководства.

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

Теперь вы стоите у ворот удаленного репозитория. Как попасть туда? Просто, мы будем использовать еще немного команд Git.

Как лучшая практика, вы всегда должны проверять состояние вашей ветви с помощью команды git status. Эта команда покажет, какие файлы были добавлены, удалены, отслеживаемы или неотслеживаемы.

git status

Также вам следует убедиться, что у вас нет добавленных файлов, которые неотслеживаемы. В этом случае их нужно добавить, чтобы они были отслеживаемы и добавлены к коммиту.

Вы можете использовать команду git add, чтобы добавить все файлы, которые вы создали во время разработки. Теперь вам может потребоваться записать имена файлов, если вы хотите добавить только определенные файлы. Если вы хотите добавить все файлы, используйте «.» для добавления всех файлов.

Затем мы будем использовать команду git commit, чтобы зафиксировать все файлы, которые мы добавили на предыдущем шаге. Вам нужно будет использовать флаг -m, чтобы написать сообщение, в противном случае вас перебросит в режим текстового редактора для написания сообщения, что не является удобным процессом.

Для вашего сообщения вы можете написать краткое замечание о том, что вы сделали. Например: “создал(а) новую крутую функцию, добавил(а) новую иконку в меню и исправил(а) ошибки”.

git commit -m “<your commit message goes here>”

Наконец, вы можете использовать команду git push, чтобы отправить вашу ветку в удаленный репозиторий.

git push --set-upstream origin <<your branch name>>

Теперь, после отправки вашей ветки, вам нужно перейти на GitHub или на место, где хранятся ваши удаленные репозитории, найти вашу недавнюю отправку и нажать Создать запрос на перенос.

После нажатия на эту кнопку вы перейдете на страницу, где сможете добавить рецензентов и участников вашей команды, которые утвердят или отклонят ваш запрос на объединение. Во втором случае они смогут оставить комментарии о том, что нужно исправить перед разрешением вашей ветки объединиться с удаленной основной веткой.

Как только обзор завершится и ваш запрос на слияние будет утвержден, кнопка Слияние станет доступной. Щелкните на эту кнопку, чтобы начать слияние. Если слияние прошло успешно, вы получите сообщение о том, что ваш новый код был добавлен.

Поздравляем! Теперь вы освоили основы использования команды git merge!

Заключение

Команда git merge – мощный инструмент, который позволит вам и вашей команде работать с разными ветками для разработки новых функций, после чего объединить их в основной репозиторий.

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

Git – это мощный инструмент, способный на многое. Чем больше вы узнаете о различных командах, которые вы можете использовать, тем лучше разработчиком вы станете. Теперь, когда вы изучили все, что вам нужно знать о слиянии веток, настало время исследовать другие команды. Удачи в вашем путешествии по овладению Git!


Source:
https://petri.com/git-merge-combine-branches/