Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Git cherry-pick копирует изменения из коммитов одной или нескольких исходных ветвей в целевую ветвь. В отличие от слияния или перебазы, cherry-pick позволяет выбрать конкретные коммиты из исходной ветви. Для каждого коммита исходной ветки, скопированного с помощью cherry-pick, Git создает соответствующий коммит в целевой ветке.
Вы можете избирательно подходить к выполнению этих распространенных задач.
- Разверните определенную функцию из одной ветви в другую.
- Скопируйте работу, которую вы закоммитили в неправильную ветку.
- Примените исправление ошибки к нескольким ветвям.
Чтобы получить общее представление о рабочем процессе Git, см. учебник Azure Repos Git.
Предпосылки
Категория |
Требования |
доступ к проекту |
Член проекта . |
Разрешения |
— Просмотр кода в частных проектах: по крайней мере базовый доступ. — Клонирование или внесение вклада в код в частных проектах: Участник группы безопасности для участников или наличие соответствующих разрешений в проекте. — Задайте разрешения ветви или репозитория: управление разрешениями для ветви или репозитория. — Измените ветвь по умолчанию: . Измените политики и разрешения для репозитория. — Импорт репозитория: член группы безопасности администраторов проекта или разрешение уровня проекта Git на создание репозитория установлено в «Разрешить» . Дополнительные сведения см. в разделе "Настройка разрешений репозитория Git". |
услуги |
Repos включено. |
Инструменты |
Необязательно. Используйте команды az repos: Azure DevOps CLI. |
Примечание.
В общедоступных проектах пользователи с доступом Stakeholder имеют полный доступ к Azure Repos, включая возможность просмотра, клонирования и участия в коде.
Категория |
Требования |
доступ к проекту |
Член проекта . |
Разрешения |
— Просмотр кода: доступ уровня Basic хотя бы . — Клонирование или участие в коде: член группы безопасности участников или обладатель соответствующих разрешений в проекте. |
услуги |
Repos включено. |
Выбрать коммит
Azure Repos
Azure Repos предоставляет ограниченную поддержку чери-пика и только для создания пул-реквеста с целью внедрения быстрого исправления в целевую ветвь. Дополнительные сведения см. в статье «Улучшение процесса cherry-picking в Azure DevOps».
Параметр Cherry-pick в меню пулл запроса в Azure Repos выполняет следующие действия:
- Создает новую тематическую ветку из целевой ветки pull request.
- Переносит все изменения из исходной ветки pull-запроса в новую тематическую ветку.
- Предложит создать пулл-реквест для объединения новой тематической ветки в целевую ветвь.
Пошаговое руководство по созданию нового запроса на слияние с использованием cherry-pick.
GitHub
Веб-интерфейс GitHub не поддерживает чери-пик, но GitHub Desktop поддерживает. Пошаговые инструкции по чередованию коммита в GitHub Desktop см. в разделе "Чередование коммита".
Visual Studio 2022 предоставляет интерфейс управления версиями Git с помощью меню Git, изменений Git и контекстных меню в Обозреватель решений. Visual Studio 2019 версии 16.8 также предлагает пользовательский интерфейс Team Explorer Git. Дополнительные сведения см. на вкладке Visual Studio 2019 — Team Explorer .
Выберите "Управление ветвями Git > " , чтобы открыть окно репозитория Git.
В окне Git репозитория щелкните правой кнопкой мыши целевую ветвь и выберите Переключиться.
В представлении "Ветви" щелкните правой кнопкой мыши исходную ветвь и выберите Просмотр истории, чтобы открыть вкладку История.
На вкладке "Журнал" щелкните правой кнопкой мыши фиксацию, которую вы хотите выбрать, и выберите "Вишни-Выбор". Visual Studio не поддерживает выбор вишни нескольких фиксаций за раз, поэтому вам потребуется повторить этот шаг для каждой фиксации, которую вы хотите выбрать вишни.
Visual Studio создает новый коммит в целевой ветке, который содержит изменения из выбранного коммита. Если операция выбора вишни не завершена успешно, Visual Studio уведомит вас.
Visual Studio 2019 версии 16.8 и более поздних версий предоставляет интерфейс управления версиями Git при сохранении пользовательского интерфейса Team Explorer Git. Чтобы использовать Team Explorer, снимите флажок Инструменты>Параметры>Предварительные функции>Новый опыт работы с Git в строке меню. Можно использовать функции Git в любом из интерфейсов взаимозаменяемо.
В Team Explorer нажмите кнопку "Главная " и выберите "Ветви".
В представлении «Ветви» щелкните правой кнопкой мыши целевую ветвь и выберите Переключиться.
В представлении "Ветви" щелкните правой кнопкой мыши исходную ветвь и выберите Посмотреть журнал, чтобы открыть вкладку "История коммитов".
На вкладке «История» щелкните правой кнопкой мыши коммит, который вы хотите выбрать, и выберите Cherry-Pick. Visual Studio не поддерживает выполнение cherry-pick для нескольких фиксаций одновременно, поэтому вам потребуется повторить этот шаг для каждой фиксации, которую вы хотите выполнить cherry-pick.
Visual Studio создает новый коммит в целевой ветке, который содержит изменения из коммита, выполненного методом cherry-pick. Если операция выбора вишни не завершена успешно, Visual Studio уведомит вас.
Используйте команду git log
для перечисления фиксаций исходной ветви. Флаг --oneline
сокращает информацию о коммите.
git log --oneline <source branch>
Git перечисляет изменения в порядке от самых последних к более ранним. Каждый ИД фиксации — это частичный хэш SHA-1, который однозначно идентифицирует фиксацию. Например:
e745d06 (HEAD -> add-network-controller) Add a test initialization class
a89f48e (origin/add-network-controller) Add fiber optic transceiver test
31da50b Add network switch test
e74baa2 (origin/main, origin/HEAD, test-fiber-optic-transmitter, main) Add readme content
0c14391 Add readme file
32e3946 Add project files.
Запишите идентификатор фиксации, которую вы хотите выбрать.
Переключитесь на целевую ветку, если она еще не выбрана.
git checkout <target branch>
Фиксация, скрытие или отмена любых незафиксированных изменений.
Чтобы выбрать одну фиксацию:
git cherry-pick <commit ID>
Чтобы выбрать несколько фиксаций, разделите ИД фиксации пробелами. Коммиты будут применены в том порядке, в котором вы их вводите.
git cherry-pick <commit1 ID> <commit2 ID> <commit3 ID>
Чтобы выбрать набор коммитов в определённом диапазоне включительно, используйте ^..
нотацию диапазона:
git cherry-pick <oldest-commit ID>^..<newest-commit ID>
При выборе нескольких коммитов команда cherry-pick по умолчанию создает соответствующую последовательность новых коммитов в целевой ветке. Чтобы сообщить Git этапу и не зафиксировать изменения целевой ветви, используйте -n
флаг:
git cherry-pick -n <commit1 ID> <commit2 ID>
Затем можно вручную создать один коммит, чтобы включить все изменения из операции cherry-pick.
Git уведомит вас о наличии конфликт слияния во время операции выбора вишни. Можно либо устранить конфликты, а затем запустить git cherry-pick --continue
, или выполнить git cherry-pick --abort
для отмены операции cherry-pick.
Следующие шаги
Связанные статьи