Git
Chapters ▾ 2nd Edition

A3.4 Appendix C: Команды Git - Ветвление и слияния

Ветвление и слияния

За создание новых веток и слияние их воедино отвечает несколько Git команд.

git branch

Команда git branch — это своего рода "менеджер веток". Она умеет перечислять ваши ветки, создавать новые, удалять и переименовывать их.

Большая часть главы Ветвление в Git посвящена этой команде, она используется повсеместно в этой главе. Впервые команда branch была представлена в разделе Создание новой ветки, а большинство таких её фич как перечисление и удаление веток были разобраны в разделе Управление ветками.

В главе Отслеживание веток мы показали как использовать сочетание git branch -u для отслеживания веток.

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

git checkout

Команда git checkout используется для переключения веток и выгрузки их содержимого в рабочую директорию.

Мы познакомились с этой командой в главе Переключение веток вместе с git branch.

В главе Отслеживание веток мы узнали как использовать флаг --track для отслеживания веток.

В главе Использование checkout в конфликтах мы использовали эту команду с опцией --conflict=diff3 для разрешения конфликтов заново, в случае если предыдущее решение не подходило по некоторым причинам.

Мы рассмотрел детали взаимосвязи этой команды и git reset в главе Раскрытие тайн reset.

Мы исследовали внутренние механизмы этой команды в главе HEAD.

git merge

Команда git merge используется для слияния одной или нескольких веток в текущую. Затем она устанавливает указатель текущей ветки на результирующий коммит.

Мы познакомили вас с этой командой в главе Основы ветвления. И хотя git merge встречается в этой книге повсеместно, практически все использования имеют вид git merge <branch> с указанием единственной ветки для слияния.

Мы узнали как делать "сплющенные" слияния (когда Git делает слияние в виде нового коммита, без сохранения всей истории работы) в конце главы Forked Public Project.

В главе Продвинутое слияние мы глубже разобрались с процессом слияния и этой командой, включая флаги -Xignore-all-whitespace и --abort, используемый для отмены слияния в случае возникновения проблем.

Мы научились проверять криптографические подписи перед слияниями если ваш проект использует GPG в главе Подпись коммитов.

Ну и наконец в главе Слияние субдеревьев мы познакомились со слиянием поддеревьев.

git mergetool

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

Мы вкратце упомянули о ней в главе Основные конфликты слияния и рассказали как настроить свою программу слияния в главе External Merge and Diff Tools.

git log

Команда git log используется для просмотра истории коммитов, начиная с самого свежего и уходя к истокам проекта. По умолчанию, она показывает лишь историю текущей ветки, но может быть настроена на вывод истории других, даже нескольких сразу, веток. Также её можно использовать для просмотра различий между ветками на уровне коммитов.

Практически во всех главах книги эта команда используется для демонстрации истории проекта.

Мы познакомились c git log и некоторыми её деталями в главе Просмотр истории коммитов. Там мы видели использование опций -p и --stat для получения представления об изменениях в каждом коммите, а также --pretty and --oneline для настройки формата вывода этой команды — более полным и подробным или кратким.

В главе Создание новой ветки мы использовали опцию --decorate чтобы отобразить указатели веток на истории коммитов, а также --graph чтобы просматривать историю в виде дерева.

В главах Private Small Team и Диапазоны коммитов мы рассмотрели синтаксис branchA..branchB для просмотра уникальных для заданной ветки коммитов. Мы часто использовали этот приём в Диапазоны коммитов.

В главах История при слиянии и Три точки мы рассмотрели синтаксис branchA...branchB и опцию --left-right для просмотра что находится в первой, либо второй ветке, но не сразу в обеих. Также в главе История при слиянии рассмотрели опцию --merge, которая может быть полезной при разрешении конфликтов, а также --cc для просмотра конфликтов слияния в истории проекта.

В главе RefLog-сокращения мы использовали опцию -g для вывода git reflog, используя git log.

В главе Поиск мы рассмотрели использование опций -S и -L для поиска событий в истории проекта, например, истории развития какой-либо фичи.

В главе Подпись коммитов мы показали, как использовать опцию --show-signature для отображения строки валидации подписи для каждого коммита в git log.

git stash

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

Эта команда практически целиком раскрыта в главе Прибережение и очистка.

git tag

Команда git tag используется для задания постоянной метки на какой-либо момент в истории проекта. Обычно она используется для релизов.

Мы познакомились и разобрались с ней в главе Работа с метками и использовали на практике в Tagging Your Releases.

Мы научились создавать подписанные с помощью GPG метки, используя флаг -s, и проверять их, используя флаг -v, в главе Подпись результатов вашей работы.