Ветвление и слияние изменений

Завершено

При работе с кодом Bicep часто приходится выполнять несколько задач одновременно. Например, вот два сценария для работы с веб-сайтом вашей компании по продаже игрушек:

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

Из этого урока вы узнаете о ветвях Git.

Примечание.

Команды в этом уроке демонстрируют основные понятия. На этом этапе не выполняйте команды. Вскоре вы поупражняетесь с полученными знаниями.

Что такое ветви?

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

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

Создание и извлечение ветви

Создать ветвь в Git быстро и легко. Существует несколько способов сделать это, однако проще всего использовать команду git checkout. Ниже приведен пример создания новой ветви my-experimental-changes.

git checkout -b my-experimental-changes

Эта команда на самом деле выполняет два действия: создает ветвь my-experimental-changes и извлекает только что созданную ветвь. Извлечение означает, что копия файлов в папке будет отражать содержимое ветви. Если у вас есть две ветви с различными наборами изменений, проверьте одну ветвь, а затем другую можно перевернуть между двумя наборами изменений.

Переключиться на существующую ветвь можно с помощью команды git checkout. В этом примере вы извлекаете ветвь main:

git checkout main

Примечание.

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

Работа в ветви

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

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

Слияние ветвей

Ветви — это отличный способ отделения выполняемой работы от текущей рабочей версии кода Bicep. Однако после внесения изменений в файлы в ветви часто требуется слияние изменений с ветвью main.

При работе с одной ветвью слияние изменений другой ветви с текущей ветвью можно выполнить с помощью команды git merge.

Примечание.

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

Ниже приведен пример, демонстрирующий извлечение ветви main и последующее слияние изменений из ветви my-experimental-changes с ветвью main. Наконец, вы удаляете ветвь my-experimental-changes, так как она больше не нужна.

git checkout main
git merge my-experimental-changes
git branch -d my-experimental-changes

Совет

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

Конфликты слияния

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

Мы не подробно обсудим конфликт слияния в этом модуле, но важно знать, что конфликт слияния может произойти. И это более распространено при совместной работе с другими людьми. В сводке по этому модулю мы приводим ссылку на дополнительные сведения о том, как разрешать конфликты слияния с помощью Git и Visual Studio Code.

Рабочие процессы Git

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

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

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

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