Ответ
Основная команда: git cherry-pick <commit-hash> — применяет изменения, внесенные указанным коммитом, к текущей ветке, создавая новый коммит.
Типичный сценарий использования: Вы хотите взять исправление бага из ветки develop и перенести его в ветку production, не сливая всю develop.
Пошаговый пример:
# 1. Находим хэш нужного коммита в истории (например, abc123)
git log --oneline develop
# 2. Переключаемся на целевую ветку
git checkout production
# 3. Применяем ("вишнёво выбираем") коммит
git cherry-pick abc123
Ключевые особенности и опции:
- Создает новый коммит: Хэш нового коммита будет отличаться от исходного, хотя изменения идентичны.
- Диапазон коммитов: Можно применить несколько коммитов подряд.
git cherry-pick abc123^..def456 # Применяет все коммиты от abc123 (включительно) до def456 - Разрешение конфликтов: Если изменения конфликтуют с текущим кодом, Git остановит процесс. Нужно:
- Разрешить конфликты вручную в файлах.
- Добавить исправленные файлы:
git add <file>. - Продолжить:
git cherry-pick --continue.
- Отмена операции:
git cherry-pick --abort— полностью отменить операцию и вернуть ветку в исходное состояние.git cherry-pick --quit— прервать операцию, но оставить уже разрешенные конфликты и индекс.
Альтернативы и когда их использовать:
git merge— для интеграции всей истории ветки.git rebase— для перебазирования серии коммитов (изменяет историю).
cherry-pick идеален для точечного переноса отдельных исправлений или фич между ветками.