Ответ
Cherry-pick — это команда Git для выборочного применения изменений из одного коммита в текущую ветку, без слияния всей истории ветки-источника.
Основное применение:
- Перенос конкретного исправления (фикса) из одной ветки в другую.
- Восстановление потерянного коммита.
- Точечное применение изменений, когда полное слияние нежелательно.
Пример использования:
git cherry-pick abc123def
Где abc123def — хэш целевого коммита.
Ключевые особенности и нюансы:
- Создает новый коммит: Изменения применяются как новый коммит в текущей ветке, даже если содержимое идентично исходному. Хэш и метаданные (например, дата) будут другими.
- Авторство сохраняется: Автор (
Author) оригинального коммита сохраняется. Коммитером (Committer) становится пользователь, выполнившийcherry-pick. - Возможны конфликты: Если изменения зависят от кода, отсутствующего в текущей ветке, возникнет конфликт, который нужно разрешить вручную.
- Может нарушить историю: Чрезмерное использование усложняет отслеживание происхождения кода и создает нелинейную историю. Рекомендуется для точечных операций, а не для систематического переноса функциональности.
Полезные флаги:
-n(--no-commit): Применяет изменения, но не создает коммит, позволяя добавить их в существующий.-x: Добавляет в сообщение нового коммита строку(cherry picked from commit ...)для упрощения отслеживания.