Поиск…


Вступление

Вишневый подборщик берет патч, который был введен в фиксацию, и пытается повторно применить его в филиале, в котором вы сейчас находитесь.

Источник: Git SCM Book

Синтаксис

  • 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 для получения дополнительной информации.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow