Что такое `git cherry-pick` и для чего он используется?

«Что такое `git cherry-pick` и для чего он используется?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Типичные сценарии использования:

  1. Перенос исправления (hotfix) из ветки main в ветку develop.
  2. Восстановление случайно удаленного коммита, если известен его хеш.
  3. Выборочное применение фич из одной длинноживущей ветки в другую.

Базовый синтаксис:

# Переключиться на целевую ветку
git checkout feature-branch

# Применить коммит с указанным хешем
git cherry-pick abc123def

# Применить несколько коммитов (порядок важен!)
git cherry-pick abc123 def456

Ключевые флаги и нюансы:

  • -x — добавляет в сообщение нового коммита строку (cherry picked from commit ...). Рекомендуется для аудита.
  • -n (--no-commit) — применяет изменения, но не создает коммит, позволяя объединить несколько cherry-pick в один.
  • Конфликты: как и при слиянии, могут возникнуть конфликты, которые нужно разрешить вручную, после чего выполнить git cherry-pick --continue.
  • Важно: cherry-pick создает новый коммит с другим хешем, даже если изменения идентичны. Злоупотребление может "засорить" историю. Для систематического переноса изменений лучше использовать git merge или git rebase.