Cherry-Picking

Продвинутый Git

Amanda Crawford-Adamo

Software and Data Engineer

Что такое cherry-pick?

Применяет изменения из конкретного коммита к другой ветке

Cherry-Pick одного коммита

git cherry-pick <commit-hash>

Cherry-Pick нескольких коммитов

git cherry-pick <hash1> <hash2> ..

Назначение

  • Применение точечных исправлений к другим веткам
  • Откат функций до стабильной версии
  • Выборочное применение экспериментальных изменений
  • Восстановление потерянных коммитов
Продвинутый Git

Пример cherry-pick

График веток main и feature. В main два коммита. Ветка feature ответвляется от main после последнего коммита.

Два изображения с логами веток main и feature до выполнения cherry-pick.

Продвинутый Git

Процесс cherry-pick

  1. Переключитесь на ветку main

    git checkout main
    
  2. Выполните cherry-pick, чтобы перенести изменения коммита def456 из ветки feature.

    git cherry-pick def456
    

График веток main и feature. В main три коммита. Ветка feature ответвляется от main после второго коммита и содержит два дополнительных коммита. Третий коммит в main — это cherry-picked коммит из последнего коммита ветки feature.

Продвинутый Git

Разрешение конфликтов при cherry-pick

Шаги разрешения конфликтов
  1. Вручную отредактируйте конфликтующие файлы
  2. Добавьте исправленные файлы в индекс командой git add <resolved-files>
  3. Продолжите процесс cherry-pick с флагом --continue
git cherry-pick --continue
Остановка cherry-pick

Чтобы прервать операцию cherry-pick, используйте флаг --abort

git cherry-pick --abort
Продвинутый Git

Когда применять cherry-pick

Случаи применения

  1. Применение горячих исправлений
  2. Тестирование изолированных функций

Предостережения

  1. Может создавать дублирующиеся коммиты
  2. При частом использовании усложняет историю проекта
  3. Для крупных изменений рассмотрите merge или rebase
Продвинутый Git

Давайте потренируемся!

Продвинутый Git

Preparing Video For Download...