Введение
Эта статья — третья в серии «Использование 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. Поделитесь своим мнением в комментариях!









