Ветвление и слияние изменений
При работе с кодом 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.