Menu
Coddy logo textTech

Git Cherry-pick

Последнее обновление

git cherry-pick копирует изменения из одного или нескольких конкретных коммитов и применяет их к вашей текущей ветке в виде новых коммитов. Так можно взять одно исправление из другой ветки, не сливая всю эту ветку целиком - удобно для бэкпорта хотфикса или для того, чтобы вытащить один коммит из ветки функциональности.

Попробуйте эти команды в терминальном playground - настоящая оболочка в вашем браузере, ничего не нужно устанавливать.

git cherry-pick копирует выбранный коммит из другой ветки и применяет его к текущей.

Синтаксис

CommandWhat it does
git cherry-pick <hash>Применяет один коммит к текущей ветке
git cherry-pick <a> <b>Применяет несколько коммитов по порядку
git cherry-pick <a>..<b>Применяет диапазон коммитов (исключая a)
git cherry-pick -n <hash>Применяет изменения, но пока не коммитит
git cherry-pick -x <hash>Отмечает исходный коммит в сообщении

Во время cherry-pick

Если cherry-pick приводит к конфликту, разрешите его и продолжите.

CommandWhat it does
git cherry-pick --continueПродолжает после разрешения конфликтов
git cherry-pick --abortОтменяет и восстанавливает ветку
git cherry-pick --skipПропускает текущий коммит

Пример по шагам

ШагКомандаРезультат
1git log --oneline hotfixНайдите хеш исправления, например a1b2c3d
2git switch mainПерейдите в ветку, которая должна получить исправление
3git cherry-pick a1b2c3dПрименяет исправление к main как новый коммит с новым хешем

Часто задаваемые вопросы о git cherry-pick

Что делает git cherry-pick?
Он берёт изменения, внесённые конкретным коммитом, и применяет их к вашей текущей ветке в виде совершенно нового коммита (с новым hash). В отличие от merge или rebase, он не переносит целую ветку - только тот коммит или коммиты, которые вы указали.
Когда стоит использовать cherry-pick?
Используйте его, когда вам нужен конкретный коммит в другом месте - например, чтобы сделать бэкпорт исправления ошибки из main в release-ветку или вытащить один полезный коммит из ветки функциональности, не сливая всё. Если вам нужна вся ветка целиком, используйте merge или rebase.
Как сделать cherry-pick нескольких коммитов?
Перечислите их: git cherry-pick <a> <b> <c> применяет каждый по порядку. Для непрерывного диапазона используйте git cherry-pick <start>..<end>, который применяет каждый коммит после start вплоть до end включительно. Добавьте <start>^..<end>, если хотите включить и сам start.
Что делать, если cherry-pick вызывает конфликт?
Git приостанавливается и помечает конфликтующие файлы. Разрешите их, выполните git add для результатов, затем запустите git cherry-pick --continue. Чтобы полностью отменить операцию, используйте git cherry-pick --abort, который возвращает вашу ветку в состояние до начала cherry-pick.
Как перенести коммит из другой ветки через cherry-pick?
Найдите хеш коммита командой git log --oneline <other-branch>, переключитесь на ветку, которая должна его получить, и выполните git cherry-pick <hash>. Можно передать и имя ветки, например git cherry-pick feature: тогда будет взят коммит с вершины этой ветки.
Чем cherry-pick отличается от merge?
git merge переносит все коммиты ветки и записывает место, где истории соединились. Cherry-pick копирует только названные вами коммиты, в виде новых коммитов без связи с оригиналами. Сливайте ветку, когда нужна она вся; используйте cherry-pick, когда нужны один или два коммита.
Можно ли попрактиковаться в этом онлайн?
Да. Откройте терминальный playground, чтобы выполнить git cherry-pick в настоящей оболочке в вашем браузере - ничего не нужно устанавливать. Бесплатный интерактивный курс Git от Coddy также пошагово охватывает перенос коммитов между ветками.
Coddy programming languages illustration

Изучайте Git с Coddy

НАЧАТЬ