Ответ
git cherry-pick применяет изменения из указанного коммита к текущей ветке, создавая новый коммит.
Базовый синтаксис:
git cherry-pick <commit-hash>
# Пример:
git cherry-pick abc123def
Как это работает:
- Git вычисляет разницу (патч), которую вносит выбранный коммит.
- Эта разница применяется к текущему состоянию вашей ветки (
HEAD). - Если применение прошло успешно, создается новый коммит с аналогичными изменениями.
Типичные сценарии использования:
- Перенос hotfix: Исправление из
mainнужно применить к старой версии (release/v1.0). - Восстановление потерянного коммита: Коммит был случайно удален или потерян при сложном
rebase. - Выборочное копирование фич: Взять только один конкретный коммит из feature-ветки, не сливая её целиком.
Важные особенности и риски:
- Конфликты: Могут возникнуть, если изменения зависят от кода, отсутствующего в текущей ветке.
- Дублирование коммитов: В истории появляется новый коммит с тем же содержимым, но другим хэшем.
- Не для массового переноса: Для переноса многих коммитов предпочтительнее
mergeилиrebase, чтобы сохранить историю и связи.
Практический совет: Используйте git cherry-pick -x, чтобы добавить в сообщение нового коммита строку (cherry picked from commit ...), что упрощает отслеживание происхождения изменений.