Git
Выбор вишни
Поиск…
Вступление
Вишневый подборщик берет патч, который был введен в фиксацию, и пытается повторно применить его в филиале, в котором вы сейчас находитесь.
Синтаксис
- git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] [-S [key-id]] commit ...
- git cherry-pick - продолжение
- git cherry-pick --quit
- git cherry-pick --bort
параметры
| параметры | подробности |
|---|---|
| -e, --edit | С помощью этой опции git cherry-pick позволит вам отредактировать сообщение фиксации до фиксации. |
| -Икс | При записи фиксации добавьте строку, в которой говорится: «(вишня выбрана из фиксации ...)» в исходное сообщение фиксации, чтобы указать, какое из этих изменений выбрано вишневым. Это делается только для выбора вишни без конфликтов. |
| --ff | Если текущий HEAD совпадает с родительским элементом фиксации вишни, тогда будет выполнена быстрая перемотка вперед к этой фиксации. |
| --Продолжить | Продолжайте работу, используя информацию в .git / sequencer. Может использоваться для продолжения после разрешения конфликтов при неудачном наборе вишни или возврате. |
| --уволиться | Забудьте о текущей текущей операции. Может использоваться для очистки состояния секвенсора после неудачного набора вишни или возврата. |
| --abort | Отмените операцию и верните ее в состояние предварительной последовательности. |
Копирование фиксации из одной ветки в другую
git cherry-pick <commit-hash> будет применять изменения, сделанные в существующей фиксации к другой ветке, при записи нового фиксации. По существу, вы можете скопировать фиксации из ветки в ветвь.
Учитывая следующее дерево (Источник)
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
\
76cada - 62ecb3 - b886a0 [feature]
Предположим, мы хотим скопировать b886a0 на мастер (сверху 5a6057 ).
Мы можем запускать
git checkout master
git cherry-pick b886a0
Теперь наше дерево будет выглядеть примерно так:
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 - a66b23 [master]
\
76cada - 62ecb3 - b886a0 [feature]
Если новый commit a66b23 имеет одинаковый контент (источник diff, сообщение фиксации) как b886a0 (но другой родительский элемент). Обратите внимание, что выбор вишни будет только забирать изменения в этой фиксации ( b886a0 в этом случае) не все изменения в ветке функций (для этого вам придется либо использовать перезагрузку, либо слияние).
Копирование диапазона транзакций из одной ветви в другую
git cherry-pick <commit-A>..<commit-B> поместит каждую фиксацию после A и до git cherry-pick <commit-A>..<commit-B> включит B поверх текущей отмеченной ветви.
git cherry-pick <commit-A>^..<commit-B> поместит фиксацию A и каждую фиксацию до и включительно B поверх текущей отмеченной ветви.
Проверка наличия вишни
Прежде чем вы начнете процесс вишневого выбора, вы можете проверить, существует ли фиксация, которую вы хотите использовать для зависания, в целевой ветке, и в этом случае вам не нужно ничего делать.
git branch --contains <commit> отображает локальные ветви, содержащие указанную фиксацию.
git branch -r --contains <commit> также включает в себя удаленные ветви отслеживания в списке.
Найти коммиты, которые еще не применяются для восходящего потока
Команда git cherry показывает изменения, которые еще не выбраны вишней.
Пример:
git checkout master
git cherry development
... и см. вывод немного так:
+ 492508acab7b454eee8b805f8ba906056eede0ff
- 5ceb5a9077ddb9e78b1e8f24bfc70e674c627949
+ b4459544c000f4d51d1ec23f279d9cdb19c1d32b
+ b6ce3b78e938644a293b2dd2a15b2fecb1b54cd9
Конец, что с + будет теми, кто еще не вишневый в development .
Синтаксис:
git cherry [-v] [<upstream> [<head> [<limit>]]]
Опции:
-v Показывать объекты фиксации рядом с SHA1.
<вверх по течению> Отправление вверх для поиска эквивалентных коммитов. По умолчанию используется дочерняя ветвь HEAD.
<head> Рабочая ветвь; по умолчанию - HEAD.
<limit> Не сообщать о фиксации до (и включая) лимита.
Ознакомьтесь с документацией на git-cherry для получения дополнительной информации.