Назад к вопросам

Ответ от нейросети

sobes.tech AI

git cherry-pick применяется для переноса одного или нескольких коммитов из одной ветки в другую.

Принцип работы:

  1. Выбирает указанный коммит (или коммиты) в исходной ветке.
  2. Применяет изменения, содержащиеся в этих коммитах, к текущей активной ветке.
  3. Создает новые коммиты в текущей ветке с теми же изменениями и сообщениями, что и исходные.

Когда использовать:

  • Перенос конкретного исправления ошибки из одной ветки (например, production) в другую (например, разработка), не затрагивая другие изменения.
  • Применение изменений из одной feature-ветки в другую, не сливая их целиком.
  • Отмена некорректного merges с сохранением отдельных коммитов.

Отличия от merge и rebase:

  • merge: Объединяет всю историю изменений из одной ветки в другую.
  • rebase: Переписывает историю коммитов, перемещая их на новую базу.
  • cherry-pick: Применяет только выбранные коммиты, создавая новые и не изменяя историю исходных коммитов.

Основная команда:

# Перенос одного коммита
git cherry-pick <commit-hash>

# Перенос нескольких коммитов (в порядке их указания)
git cherry-pick <commit-hash-1> <commit-hash-2> ...

Пример:

Допустим, есть две ветки: main и feature. В ветке feature сделан коммит fix-typo. Нужно перенести этот коммит в ветку main.

# Переключаемся на целевую ветку
git checkout main

# Выполняем cherry-pick, используя хэш коммита из ветки feature
git cherry-pick 7f3bca2 # Пример хэша коммита

После выполнения команды в ветке main появится новый коммит с теми же изменениями, что и fix-typo, но с другим хэшем.