Как использовать ветки Git
Эта статья является третьей частью серии «Использование Git».
В мире систем контроля версий GIT, возможно, является одной из лучших с точки зрения гибкости. Очень легко изучить синтаксис и понять, как git лучше всего подходит для вашего рабочего процесса и вашей среды.
В этом руководстве вы узнаете, как создать две ветки (мастер и разработка) и как объединить код со стадии разработки в рабочую среду.
Ветка, по своей сути, представляет собой уникальную серию изменений кода с уникальным именем.
По умолчанию первая ветвь называется «мастер».
Просмотр веток
Прежде чем создавать новые ветки, мы хотим увидеть все существующие ветки.
git branch -a
Добавление \-a\ в конец нашей команды говорит GIT, что мы хотим видеть все существующие ветки, включая те, которых нет в нашей
Вывод будет выглядеть примерно так:
* master remotes/origin/master
Звездочка рядом с «хозяином» в первой строке вывода указывает, что мы в настоящее время находимся на этой ветке.
Теперь, когда мы знаем, как просматривать ветки, пришло время создать нашу первую.
Создание веток
Как указано в начале этой статьи, мы хотим иметь разработку и производственную настройку для нашей среды кодирования.
Мы собираемся рассматривать основную ветвь по умолчанию как нашу продукцию, и поэтому нам нужно создать единственную ветвь для разработки или подготовки к производству.
Чтобы создать новую ветку с именем develop, введите следующее:
git checkout -b develop
Предполагая, что у нас еще нет ветки с именем \develop\, вывод будет следующим:
Switched to a new branch 'develop'
В случае, если ветка с таким именем уже существует, GIT сообщит нам следующее:
fatal: A branch named 'develop' already exists.
Вы можете переключаться между двумя вашими ветвями с помощью команды git checkout:
git checkout master
или
git checkout develop
Предполагая, что ветка, на которую вы пытаетесь переключиться, существует, вы увидите вывод, похожий на следующий:
Switched to branch 'master'
Если вы попытаетесь переключиться на несуществующую ветку, например
git checkout nosuchbranch
Гит скажет вам:
error: pathspec 'nosuchbranch' did not match any file(s) known to git.
Теперь, когда у нас есть несколько ветвей, нам нужно использовать их с пользой.
Чтобы проиллюстрировать этот процесс, нам нужно вернуться к нашей ветке разработки:
git checkout develop
Внесение изменений в нашу ветку разработки
В этой ветке мы собираемся создать новый пустой файл с именем \develop\.
touch develop
Как и в предыдущем уроке, нам нужно сообщить git, что мы хотим отслеживать этот новый файл.
Мы можем добавить файл разработки, набрав:
git add develop
Приведенный выше набор команд создаст пустой файл с именем \develop\ и добавит его в GIT.
Нам также нужно зафиксировать этот файл, который прикрепит этот файл к ветке, в которой он сейчас находится, то есть \develop\.
git commit -m "develop file" develop
Этот файл теперь существует в ветке разработки; как собирался выяснить, его не существует в основной ветке.
Во-первых, мы собираемся подтвердить, что в настоящее время мы находимся в ветке разработки. Мы можем сделать это, набрав следующее:
git branch
Вывод должен выглядеть примерно так:
* develop master
Ранее мы узнали, что звездочка рядом с названием ветки указывает на то, что мы в данный момент находимся в этой ветке.
Выполнение команды \ls\ покажет нам, что два файла существуют:
ls
Вывод покажет нам, что оба наших файла, названные соответственно \file\ и \develop\, найдены:
develop file
Слияние кода между ветвями
Самое интересное начинается после того, как мы вернемся к нашей основной ветке, что мы можем сделать с помощью команды git checkout:
git checkout master
Чтобы убедиться, что мы находимся в основной ветке, мы можем запустить следующее:
git branch
Вывод скажет нам, к какой ветке мы относимся, обозначенной звездочкой.
develop * master
Снова запустив \ls\, оказалось, что наш новый файл отсутствует.
file
Он не отсутствует — он находится в нашей ветке разработки, а мы — в нашей основной ветке.
В нашем сценарии этот файл представляет собой любое изменение в любом файле (или совершенно новый файл), который прошел все испытания в нашей ветке разработки и готов к работе.
При слиянии важно помнить, что мы хотим быть на ветке, с которой хотим слиться.
В этом случае мы хотим объединить нашу ветку разработки, где существует файл разработки, в нашу основную ветку.
Имея это в виду, учитывая, что мы уже находимся в основной ветке, все, что нам нужно сделать, это запустить команду слияния.
Одна из опций, которую мы можем передать команде слияния, а именно \--no-ff\, означает, что мы хотим, чтобы git сохранял все сообщения фиксации до слияния. Это облегчит отслеживание изменений в будущем.
Чтобы объединить изменения из ветки разработки в ветку master, введите следующее:
git merge develop --no-ff
Вывод команды будет похож на следующий:
Merge made by the 'recursive' strategy. 0 files changed create mode 100644 develop
Запуск команды ls еще раз подтвердит, что наш файл разработки теперь находится в нашей главной ветке.
develop file
Последнее, что нам теперь нужно сделать, чтобы внести это изменение на наш удаленный сервер, — это отправить наши изменения, что мы можем сделать с помощью команды git push.
git push
Вы увидите вывод, аналогичный следующему, подтверждающий, что вы выполнили слияние из ветки разработки в ветку master на удаленном сервере:
Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 332 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To ssh://git@git.domain.tld/repository 9af2dcb..53649cf master -> master
Заключение
Следуя приведенному выше руководству, вы должны иметь работающую настройку рабочего процесса с двумя ветвями и, надеюсь, понимание того, как