В мире систем контроля версий Git, вероятно, самая гибкая. Ее синтаксис прост в освоении; кроме того, научиться использовать GIT наилучшим для рабочего процесса и среды образом очень легко.
Данное руководство учит создавать две ветки («master» и «develop»), а также объединить код от стадии разработки до производства. Ветка – это, по сути, уникальная серия изменений кода с уникальным именем. Каждый репозиторий может иметь одну или больше ветвей. По умолчанию первая ветвь называется «master».
Примечание: предполагается, что пользователь уже знаком со статьями:
- Установка Git на Ubuntu 12.04
- Установка Git на сервер CentOS 6.4
- Продуктивное использование Git
Просмотр ветвей
Прежде чем создавать новую ветвь необходимо просмотреть все существующие ветви.
Чтобы это сделать, введите следующую команду:
git branch -a
Флаг «-а» в конце команды говорит GIT о необходимости просмотреть все существующие ветви, включая те, которых нет в локальной рабочей области.
Результат будет иметь примерно такой вид:
* master
remotes/origin/master
Символ звездочки перед «master»в первой строке выведенных результатов указывает на текущую ветку.
Вторая строка указывает на то, что на удаленном сервере под названием «origin» также существует ветвь с именем «master».
Научившись просматривать ветви, попробуйте создать свою собственную ветвь.
Создание ветвей
Как говорится в начале этой статьи, нужно настроить рабочую среду (production) и среду разработки (development).
Ветка по умолчанию «master» для рабочей среды уже существует, значит, теперь нужно создать только ветку «develop» для среды разработки.
Чтобы создать новую ветку под названием «develop», введите следующее:
git checkout -b 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
GIT выведет:
error: pathspec 'nosuchbranch' did not match any file(s) known to git.
Теперь, имея несколько веток, нужно научиться работать с ними.
В данном случае, ветка «develop» будет использована для тестирования изменений, а ветка «master» – для их публикации.
Чтобы проиллюстрировать этот процесс, нужно вернуться к ветке «develop»:
git checkout develop
Внесение изменений в ветку «develop»
В данной ветке нужно создать пустой файл под названием «develop».
Он не будет существовать до тех пор, пока не будет объединен с веткой «master» (на следующем этапе).
touch develop
Теперь нужно сказать GIT о необходимости отслеживать новый файл.
Чтобы добавить файл «develop», введите:
git add develop
Вышеприведенный набор команд создаст пустой файл под названием «develop» и добавит его в GIT.
Данный файл нужно также зафиксировать, то есть, прикрепить файл к текущей ветке (сейчас это ветка «develop»).
git commit -m "develop file" develop
Теперь данный файл существует на ветке «develop»; на ветке «master» его пока нет.
Теперь нужно убедиться, что «develop» является текущей веткой. Для этого введите следующее:
git branch
Выведенный результат выглядит так:
* develop
master
Как было сказано ранее, символ звездочки рядом с именем ветки указывает на текущую ветку.
Команда «ls» покажет, что существует два файла:
ls
Выведенный результат подтвердит, что оба файла (под названием «file» и «develop») найдены:
develop file
Слияние кода между ветвями
Теперь необходимо переключиться на ветку «master», что можно сделать при помощи команды «git checkout»:
git checkout master
Чтобы убедиться, что ветка «master» является текущей, введите следующее:
git branch
Символ звездочки укажет на текущую ветку:
develop
* master
Команда «ls» покажет, что нового файла «develop» нет:
file
На самом деле, его просто нет в ветке «master», он находится в ветке «develop».
Процесс передачи кода с одной ветки в другую (часто со среды разработки на рабочую среду) называется слиянием.
При слиянии важно помнить о том, что текущей должна быть та ветка, с которой нужно объединиться.
В данном случае нужно объединить ветку «develop», на которой находится файл «develop», с веткой «master».
Учитывая, что ветка «master» уже является текущей, все, что нужно сделать – запустить команду «merge».
Одна из команд, которую можно передать команде «merge», – команда «–no-ff», которая говорит GIT сохранить все сообщения о коммитах до слияния. Это облегчит отслеживание изменений в будущем.
Чтобы объединить изменения ветки «develop» с веткой «master», введите следующую команду:
git merge develop --no-ff
Вывод команды будет примерно следующим:
Merge made by the 'recursive' strategy.
0 files changed
create mode 100644 develop
Команда «ls» подтвердит что файл «develop» теперь находится на ветке «master»:
develop file
Последнее, что нужно сделать, – это передать все изменения на удаленный сервер; это можно сделать при помощи команды «git push»:
git push
Подобный выведенный результат подтверждает, что ветка «develop» объединена с «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