Cherry-pick и Git commit
Материал статьи основан на "Cherry-pick a Git commit"
В Git вы можете выбрать фиксацию (набор изменений) из существующей ветки и применить эти изменения к другой ветке. Cherry-pick может помочь вам:
- Исправить ошибки переноса из ветки по умолчанию в ветки предыдущего выпуска.
- Копировать изменений из fork в вышестоящий репозиторий (upstream repository).
Вы можете выбирать вишневые коммиты из командной строки. В пользовательском интерфейсе GitLab вы также можете:
- Cherry-pick все изменения из запроса на слияние.
- Cherry-pick один коммит.
- Cherry-pick из fork в вышестоящий репозиторий.
В данной лабораторной предлагается Cherry-pick осуществить из командной строки локально.
Cherry-pick из командной строки
Приведем пример того, как делается Cherry-pick коммита из ветки по умолчанию (master) в другую ветку (stable):
-
Создадим ветку
stableот меткиHEADветкиmaster. -
Проверьте ветку по умолчанию, затем проверьте новую stable ветка, основанная на нем:
git checkout master
git checkout -b stable -
Вернитесь к ветке по умолчанию:
git checkout master -
Внесите свои изменения, затем зафиксируйте их:
git add calculator.py
git commit -m 'Навали новых багов в calculator.py' -
Отображение журнала коммитов:
$ git log
commit a7e1a4a3258c2bed363330863265d04000d9cfe4 (HEAD -> master, origin/master, origin/HEAD)
Author: Dmitry Aladin <anon.digriz@gmail.com>
Date: Thu Oct 20 05:05:01 2022 +0300
Навалили новых багов
commit fb1926085a697430c3917d9a9ce0ecb5cd5b0972 (stable)
Merge: 18a05b7 2312b80
Author: Dmitry Aladin <anon.digriz@gmail.com>
Date: Thu Oct 20 04:46:49 2022 +0300
Merge branch 'patch1' -
Определите последний совершенный commit и скопируйте его идентификатор. Эта информация представляет собой SHA (безопасный алгоритм хэширования) коммита. SHA - это уникальный идентификатор для этого коммита, и он понадобится вам на следующем шаге.
-
Теперь, когда вы знаете SHA, ознакомьтесь с
stableснова переход:git checkout stable -
Cherry-pick коммита
SHAв ветвьstable:git cherry-pick <SHA> -
Результат Cherry-pick может быть следующим:
