Git Cherry Pick
git cherry-pick
— это полезная команда, с помощью которой можно выборочно применить коммиты Git к текущей рабочей ветке HEAD. С ее помощью можно выбрать коммит из одной ветки и применить его к другой. Команда git cherry-pick
— это удобный способ отменить изменения. Например, если коммит попал в ветку по ошибке, вы можете переключиться на нужную ветку и выполнить перенос.
Когда следует использовать команду git cherry-pick
Пользоваться командой git cherry-pick
удобно, однако это не всегда оптимально. Она может привести к дублированию коммитов, поэтому нередко разработчики предпочитают обычное слияние. Таким образом, можно сказать, что команда git cherry-pick
— средство эффективное, но узконаправленное.
Командная работа
Нередко отдельные участники команды работают над одним и тем же кодом. Это может происходить, когда новая функция продукта включает компоненты серверной и клиентской части, две составляющие продукта используют общий код или когда разработчик серверной части создает структуру данных, которую нужно будет использовать и в клиентской части. При этом разработчик клиентской части может с помощью команды git cherry-pick
выбрать коммит, в котором условная структура данных была создана. Таким образом, он сможет продолжить работу над своими проектными задачами.
Связанные материалы
Перемещение полного репозитория Git
СМ. РЕШЕНИЕ
Изучите 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
В этом примере commit
Sha является ссылкой на коммит. Такую ссылку можно найти с помощью команды 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.