Ответ
Cherry-pick — это операция Git, которая позволяет применить изменения из одного конкретного коммита в текущую рабочую ветку. Это полезный инструмент в DevOps-практиках, например, для переноса критического хотфикса из ветки разработки (develop) в ветку продакшена (main), минуя полное слияние веток.
Базовое использование:
# Находим хеш нужного коммита в истории другой ветки
git log feature/branch --oneline
# Переключаемся на целевую ветку (например, main)
git checkout main
# Применяем коммит
git cherry-pick abc123def
Практические сценарии и подводные камни:
- Хотфиксы: Самый частый кейс. Исправление, сделанное в
main, можно перенести вdevelopи другие долгоживущие ветки. - Конфликты: Если изменения в целевом коммите зависят от других, не перенесенных коммитов, возникнет конфликт слияния, который нужно разрешить вручную.
# После конфликта... git add . git cherry-pick --continue # Или отмена операции git cherry-pick --abort - Метаданные: По умолчанию создается новый коммит с новым хешем. Флаг
-xдобавляет в сообщение коммита строку(cherry picked from commit ...), что полезно для аудита. Флаг--signoffдобавляет подпись.
Рекомендация: Используйте cherry-pick для небольших, изолированных изменений. Для переноса целой функциональности или серии зависимых коммитов предпочтительнее merge или rebase, чтобы сохранить историю и избежать скрытых зависимостей.