Введение в GIT Cherry-pick
В этой статье мы подробно узнаем о GIT Cherry-pick. Есть много программистов, работающих над одной и той же разработкой программного обеспечения из разных уголков мира. Тогда как управлять кодами? Как они заставят других понять, какие изменения они внесли? Как зафиксировать коды и поддерживать разные версии? Как объединить коды?
Чтобы решить эти проблемы, GIT вошла в мир разработки. GIT является выдающейся системой управления исходным кодом (SCM) и распределенной системой контроля версий. GIT был создан Linux Torvald, человеком, который разработал ядро Linux. Очевидно, что это инструмент с открытым исходным кодом, где каждый программист может внести свой вклад в создание программного обеспечения из любой точки мира.
GIT имеет много функций. Может иметь несколько ветвей. Разработчик может написать коды после создания своей собственной ветки в локальной системе и объединить ее с основной веткой или другими ветками удаленного GIT-репозитория.
Что такое GIT Cherry-pick?
Представьте себе, продолжается работа над проектом сценария по истории и эволюции сотовых телефонов. Итак, над одним проектом работает много людей, и все работают отдельно. Однако, в конце концов, каждый скрипт будет скомпилирован вместе.
Теперь член А пишет о телефонах Apple и вдруг понимает, что это может быть лучше. Таким образом, он сообщил об этом другим членам команды, которые работают над тем же проектом. Другой член Х сказал ему, что он пишет сценарий на телефонах Android, и попросил члена А посмотреть.
Затем член А изучил сценарий товарища по команде и обнаружил, что некоторые части совпадают с некоторыми действительно хорошими изменениями. Поэтому он выбрал эти изменения и вставил в свой сценарий. Это то же самое, что Cherry-Pick называет в GIT в области программного обеспечения.
Git-cherry-pick - это мощная команда git, а cherry-pick - это процесс получения коммита из ветки и применения его к какой-либо другой ветке. Проще говоря, может быть несколько веток, в которых разработчики фиксируют свои коды. Теперь один разработчик должен зафиксировать свои коды в ветви A, однако он по ошибке зафиксировал коды в ветви B. В этот раз cherry-pick может переключить коммит на правильную ветку.
Используйте команду ниже (в системе Unix), чтобы узнать различные опции для git-cherry-pick,
Команда:
$man git-cherry-pick
Синтаксис для команды cherry-pick,
Синтаксис:
git cherry-pick (–edit) (-n) (-m parent-number) (-x)
Когда мы используем GIT Cherry-pick?
Git-cherry-pick - это полезный инструмент, но не всегда лучший метод. git-cherry-pick можно использовать в следующих сценариях,
- Чтобы исправить это, когда коммит случайно сделан в другой ветке.
- Предпочтительные традиционные слияния
- Чтобы применить изменения в существующем коммите.
- Дублировать коммит
- Исправление ошибок
Как работает GIT Cherry-pick?
Обнаружен дефект в коде в производственной среде, и необходимо внести исправление. После внесения изменений и исправления дефекта настало время вернуть это изменение кода в среду разработки, чтобы в будущем дефект не возникал снова и снова в производственной среде.
Первый вариант - это простое git merge, и это идеальное решение, если оно работает. Тем не менее, в производственной среде есть и другие изменения, которые не могут быть возвращены в среду разработки при слиянии. И в этом случае вишневый кирка является правильным вариантом.
Cherry-pick приносит тот коммит, который был сделан только для исправления ошибки. Он не выбирает другие коммиты.
Вот иллюстрация,
Рис. 1: G и H - коммиты ветки Production. От A до F Отдел развития коммитов. Проблема найдена в разделе «Производство». В коммите H разработано исправление, которое необходимо применить в ветке Development, но коммита G не требуется применять.
Рисунок 2: Теперь коммит H выбирается в ветке разработки, и в результате коммит H '. Изменения Commit G не включены в ветку Development.
Как использовать GIT Cherry-pick с примером?
Предположим, у нас есть две ветви (master и new_feature) (команда, используемая для просмотра ветви branch-git)
Мы сделали коммит (выделен) в ветке new_feature по ошибке. (команда, используемая для просмотра подтвержденных журналов - git log)
Тем не менее, он должен быть только в основной ветке. Сначала скопируйте выделенный SHA в блокноте.
Теперь мы будем использовать команду git-cherry-pick для перемещения этого коммита в основную ветку, однако перед этим нам нужно переключиться на основную ветку (команда, используемая для переключения проверки ветки-git < branchname > )
Теперь мы видим, что тот же коммит доступен в основной ветке (команда used-git log)
Более подробный пример команд git cherry-pick смотрите по ссылке ниже:
https://git-scm.com/docs/git-cherry-pick
Важные вещи для запоминания
При использовании cherry-pick и работе в команде нужно помнить три вещи.
1. стандартизировать сообщение фиксации: лучше использовать стандартизированное сообщение фиксации и -x, если мы выбираем cherry из публичной ветки.
git cherry-pick -x
Это позволит избежать слияния конфликтов в будущем.
2. скопируйте заметки: иногда у некоторых из «вишневого кирки» есть заметки, и когда мы запускаем «вишневый кирк», они не копируются. Поэтому лучше его использовать.
git notes copy
3. Выберите несколько коммитов, когда они только линейные: мы хотим выбрать несколько коммитов типа G, H (рис. 1), если они линейные, тогда используйте только следующую команду:
git cherry-pick G^..H
Вывод
Предположим, что мы хотим выбрать конкретный коммит из другой ветви и применить к текущей ветви, вот рекомендуемые шаги,
1. Найдите хеш коммита, который нужно сначала выбрать из вишни.
2. Перейдите в ветку назначения.
3. git cherry-pick -x
Разрешите конфликты, если они случаются. Если в исходном коммите есть заметки, их нужно скопировать.
git notes copy
Рекомендуемые статьи
Это руководство по GIT Cherry-pick. Здесь мы обсудим его работу и как использовать git cherry-pick с примерами в деталях. Вы также можете посмотреть следующие статьи, чтобы узнать больше -
- Git Tools
- Git Терминология
- Git Checkout Tag
- Что такое Git Branch?