Git Cherry Pick

Содержание
Введение
Общая информация
git cherry-pick
Другие статьи про Git
Git cherry-pick изображение с сайта www.andreyolegovich.ru
Cherry-pick
Freepick

Введение

В этой статье вы можете узнать про применение команды git cherry-pick.

Сначала даны общие соображения, затем информация конкретно про команду git cherry-pick

Общая информация

Cherry Picking - сбор вишенок - это процесс выбора из реализованных фич тех, которые пойдут в ближайший релиз.

Когда это происходит: в том случае, если разработчам удалось создать большое количество новых фич, но менеджмент считает, что не стоит выкатывать сразу все.

Почему бы не выложить сразу все фичи:

Тестирование API изображение с сайта www.andreyolegovich.ru
Фото: freepik.com

git cherry-pick

В git существует команда

git cherry-pick

Прочитать спецификацию можно здесь

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

Простыми словаими: cherry-pick копирует определёные коммиты из одной ветки в другую. То есть вместо полного мерджа ветки в мастер, можно добавить только некоторые коммиты

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

git cherry-pick может быть полезен для отмены изменений.

Например, предположим, что коммит случайно сделан не в ту ветвь.

Вы можете переключиться на правильную ветвь и сделать туда черри-пик.

Если сделать черри пик и потом смерджить ветку из которой он был сделать - появится дубль черрипикнутого коммита.

Это может внести путаницу, если не все в курсе происходящего.

Когда использовать git cherry pick

git cherry-pick-полезный инструмент, но не всегда лучшая практика.

Сбор вишни может привести к дублированию коммитов, и во многих сценариях, где сбор вишни будет работать, вместо этого предпочтительны традиционные слияния (merge).

С учетом сказанного git cherry-pick-это удобный инструмент для нескольких сценариев...

Командное сотрудничество.

Часто команда находит отдельных членов, работающих в одном и том же коде или вокруг него.

Возможно, новая функция продукта имеет бэкэнд и фронтенд-компонент.

Возможно, существует некоторый общий код между двумя секторами продукта.

Возможно, бэкэнд-разработчик создает структуру данных, которую также должен будет использовать фронтэнд.

Фронтенд-разработчик может использовать git cherry-pick для выбора коммита, в котором была создана эта гипотетическая структура данных.

Этот выбор позволит разработчику frontend продолжить работу над своей частью проекта.

Исправления ошибок

При обнаружении ошибки важно как можно быстрее доставить исправление конечным пользователям.

Например,предположим, что разработчик начал работу над новой функцией.

Во время разработки этой новой функции они выявляют уже существующую ошибку.

Разработчик делает коммит с исправлением этой ошибки.

Этот новый коммит с патчем может быть добавлен непосредственно в мастер, чтобы исправить ошибку, прежде чем она повлияет на большее количество пользователей.

Также может возникнуть ситуация когда ошибку нашли в более поздней версии продукта, а добавить фикс нужно в несколько предыдущих версий, которые ещё не вышли из употребления.

Отмена изменений и использование коммитов из уже неактивных веток

Иногда ветвь функции может устареть и не слиться с мастером.

Иногда запрос на вытягивание может быть закрыт без слияния.

Git никогда не теряет эти коммиты, и с помощью таких команд, как git log и git reflog, их можно найти и вернуть к жизни.

Git cherry-pick изображение с сайта www.andreyolegovich.ru
Cherry-pick
Freepick

Как использовать git cherry pick

Чтобы продемонстрировать, как использовать git cherry-pick, предположим, что у нас есть репозиторий со следующим состоянием ветви:

a - b - c - d Master \ e - f - g Feature

использование git cherry-pick является прямым и может быть выполнено следующим образом:

git cherry-pick commitSha

В этом примере commitSha -это commit reference.

Нужный коммит можно найти с помощью git log.

git log --oneline

Лог из другой ветки можно изучить с помощью

git log имя_ветки --oneline

В этом примере мы хотим черрипикнуть commit `f` в master.

Сначала мы удостоверяемся, что работаем над master.

git checkout master

Затем мы выполняем cherry-pick следующей командой:

git cherry-pick f

После выполнения наша git history будет выглядеть так:

a - b - c - d - f Master \ e - f - g Feature

Коммит f был успешно черрипикнут в главную ветвь

Примеры git cherry pick

git cherry pick также может выполнен с различными опциями:

-edit

Передача опции -edit приведет к тому, что git запросит commit message перед применением операции cherry-pick

--no-commit

Опция --no-commit выполнит выбор вишни, но вместо того, чтобы сделать новый commit, она переместит содержимое цели в рабочий каталог текущей ветви.

--singoff

Опция --singoff из системы добавит строку 'singoff' подпись в конец cherry-pick коммит сообщения

В дополнение к этим полезным опциям git cherry-pick также принимает различные варианты стратегии слияния.

Подробнее об этих параметрах читайте в документации git merge strategies.

Кроме того, git cherry-pick также принимает ввод опций для разрешения конфликтов слияний, включая опции: --abort --continue и --quit эти опции рассматриваются более подробно в отношении git merge и git rebase.

Резюме

cherry-pick - это мощная и удобная команда, которая невероятно полезна в нескольких сценариях. cherry-pick не должен использоваться неправильно вместо git merge или git rebase. Команда журнала Git-это обязательно поможет найти обязуется сливки.

Похожие статьи
Git
Установка в Windows
Установка TortoiseGit
Перейти с HTTPS на SSH
.gitignore
Необходимые Bash команды
Remote
GitHub
GitLab
Ошибки
Программирование
DevOps
SSH
Работа с API GitHub

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

IT

Образование

Актуально сейчас

Разное

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: