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