Как использовать ветки Git

0 Акции
0
0
0
0

Введение

Эта статья — третья в серии «Использование Git». Предполагается, что вы прочитали как статью об установке, так и статью «Как эффективно использовать Git».

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

В этом руководстве вы узнаете, как создать две ветки (master и development) и как объединить код из ветки development с веткой production.

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

По умолчанию первая ветка называется “master”.

Просмотреть филиалы

Прежде чем создавать новые ветки, нам нужно увидеть все существующие ветки. Просмотреть все существующие ветки можно, набрав следующую команду:

git branch -a

Добавление параметра “-a” в конец команды указывает GIT, что мы хотим увидеть все доступные ветки, включая те, которых нет в нашей локальной рабочей области.

Вывод будет примерно следующим:

* master remotes/origin/master

Звездочка рядом с “master” в первой строке вывода указывает на то, что мы в данный момент находимся на этой ветке. Вторая строка просто указывает на то, что на нашем удаленном, именованном источнике, также называемом master, существует единственная ветка.

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

Создание ветвей

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

Мы хотим использовать основную ветку "master" в качестве рабочей, поэтому нам необходимо создать единую ветку для разработки или предпроизводственной среды.

Чтобы создать новую ветку с именем develop, введите следующее:

git checkout -b develop

Предположим, у нас ещё нет ветки с названием "development", тогда вывод будет следующим:

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

Git вам это сообщит:

error: pathspec 'nosuchbranch' did not match any file(s) known to git.

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

Чтобы продемонстрировать этот процесс, нам нужно вернуться в нашу ветку разработки:

git checkout develop

Вносим изменения в наше подразделение разработки.

В этой ветке мы создадим новый пустой файл с именем “develop”. Он не будет существовать там до тех пор, пока мы не объединим его с основной веткой (на следующем шаге).

touch develop

Как и в предыдущем уроке, нам нужно сообщить Git, что мы хотим отслеживать этот новый файл.

Добавить файл "develop" можно, набрав:

git add develop

Приведенный выше набор команд создает пустой файл с именем “develop” и добавляет его в GIT.

Нам также необходимо зафиксировать этот файл, что добавит его в текущую ветку, которая называется “development”.

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

Оно не потерялось – оно находится в нашей ветке разработки, а мы – в нашей основной ветке.

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

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

В данном случае мы хотим выполнить слияние из нашей ветки разработки, где находится файл “develop”, в нашу основную ветку (master).

Учитывая это, и поскольку мы сейчас находимся в основной ветке, нам нужно всего лишь выполнить команду слияния.

Один из параметров, который можно передать команде слияния, — “–no-ff”, — означает, что мы хотим, чтобы Git сохранял все сообщения коммитов до слияния. Это упрощает отслеживание изменений в будущем.

Чтобы объединить изменения из ветки разработки с основной веткой, введите следующее:

git merge develop --no-ff

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

Merge made by the 'recursive' strategy. 0 files changed create mode 100644 develop

Повторный запуск команды `ls` подтверждает, что наш файл `develop` теперь находится в основной ветке.

develop file

Последнее, что нам нужно сделать сейчас, чтобы внести эти изменения на удалённый сервер, — это отправить их, что мы можем сделать с помощью команды `git push`.

git push

Вы увидите вывод, похожий на следующий, подтверждающий, что вы выполнили слияние из вашей ветки разработки в основную ветку на вашем удалённом сервере:

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://[email protected]/repository 9af2dcb..53649cf master -> master

Результат

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться