Close

Git Cherry Pick

git cherry-pick — это полезная команда, с помощью которой можно выборочно применить коммиты Git к текущей рабочей ветке HEAD. С ее помощью можно выбрать коммит из одной ветки и применить его к другой. Команда git cherry-pick — это удобный способ отменить изменения. Например, если коммит попал в ветку по ошибке, вы можете переключиться на нужную ветку и выполнить перенос.


Когда следует использовать команду git cherry-pick


Пользоваться командой git cherry-pick удобно, однако это не всегда оптимально. Она может привести к дублированию коммитов, поэтому нередко разработчики предпочитают обычное слияние. Таким образом, можно сказать, что команда git cherry-pick — средство эффективное, но узконаправленное.

Командная работа


Нередко отдельные участники команды работают над одним и тем же кодом. Это может происходить, когда новая функция продукта включает компоненты серверной и клиентской части, две составляющие продукта используют общий код или когда разработчик серверной части создает структуру данных, которую нужно будет использовать и в клиентской части. При этом разработчик клиентской части может с помощью команды git cherry-pick выбрать коммит, в котором условная структура данных была создана. Таким образом, он сможет продолжить работу над своими проектными задачами.

базы данных
Связанные материалы

Перемещение полного репозитория Git

Логотип Bitbucket
СМ. РЕШЕНИЕ

Изучите Git с помощью Bitbucket Cloud

Исправление багов


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

Отмена изменений и восстановление потерянных коммитов


Иногда функциональная ветка (feature) может устареть, что помешает объединению с веткой main, а запрос pull — удалиться без слияния изменений. Эти коммиты не исчезают без следа. Их можно найти в Git с помощью команд, например git log и git reflog, чтобы затем выборочно применить.

Как использовать команду git cherry-pick


Чтобы показать использование команды git cherry-pick, представим репозиторий со следующими ветками:

    a - b - c - d   Main
         \
           e - f - g Feature

Выполнить команду git cherry-pick довольно просто:

git cherry-pick commitSha

В этом примере commitSha является ссылкой на коммит. Такую ссылку можно найти с помощью команды git log. Предположим, что сейчас нам нужен коммит f в ветке main. Сначала нужно убедиться, что мы работаем над веткой main.

git checkout main

Затем совершим выборочное применение с помощью следующей команды:

git cherry-pick f

После выполнения команды история Git примет следующий вид:

    a - b - c - d - f   Main
         \
           e - f - g Feature

Коммит f был перенесен в основную ветку.

Примеры использования команды git cherry-pick


Команде git cherry-pick можно назначить ряд опций.

-edit

Если назначить команде опцию -edit, перед выборочным применением Git предложит указать сообщение коммита.

--no-commit

При использовании опции --no-commit выборочное применение не создаст новый коммит, а переместит содержимое целевого коммита в рабочий каталог текущей ветки.

--signoff

При выборочном применении опция --signoff добавляет строку с подписью в конце сообщения коммита.

Кроме этого, команде git cherry-pick можно назначить различные опции, определяющие стратегию слияния. Подробную информацию об этих опциях см. в документации по стратегиям слияния Git.

Команде git cherry-pick также можно назначить опции для разрешения конфликтов слияния, такие как --abort, --continue и --quit. Подробную информацию об этих опциях можно найти на страницах команд git merge и git rebase.

Резюме


Выборочное применение коммитов может стать оптимальным инструментом в некоторых ситуациях. Однако злоупотреблять командой git cherry-pick не стоит — иногда лучше подойдут команды git merge и git rebase. Чтобы находить коммиты для выборочного применения, используйте команду git log.


Поделитесь этой статьей
Следующая тема

Рекомендуемые статьи

Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Люди сотрудничают друг с другом, используя стену со множеством инструментов

Блог Bitbucket

Рисунок: DevOps

Образовательные программы DevOps

Демонстрация функций в демо-зале с участием экспертов Atlassian

Как инструмент Bitbucket Cloud работает с Atlassian Open DevOps

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up