Проблема: вы хотите протестировать функцию, которую кто-то разработал, но она существует только в удаленной ветке, которая, к сожалению, устарела.
- Как вишня решает проблему?
- Почему я не могу использовать git am или git apply?
Проблема: вы хотите протестировать функцию, которую кто-то разработал, но она существует только в удаленной ветке, которая, к сожалению, устарела.
Проблема: вы хотите протестировать функцию, которую кто-то разработал, но она существует только в удаленной ветке, которая, к сожалению, устарела.
Если вы выполните слияние или переустановку, вы получите кучу старых изменений, возможно, конфликтующих.
При выборе вишни вы берете один набор изменений и воспроизводите его как новую фиксацию в другой ветке.
Это полезно, если вы просто хотите, чтобы одна фиксация была перенесена в другую ветку без ее истории.
Полезно использовать параметр -x
, чтобы сообщение фиксации содержало примечание, откуда оно было взято.
Почему я не могу использовать git am или git apply?
потому что git apply предназначен для применения патчей (файлов), а git am - для применения серии патчей. git cherry-pick применяет коммиты, то есть коммиты из вашего собственного репо, а не коммиты, которые вы импортируете из других репозиториев.
git-cherry-pick - применить изменения, внесенные некоторыми существующими коммитами
[...]
Учитывая один или несколько существующих коммитов, примените изменения, вносимые каждым из них, записывая для каждого новый коммит. Это требует, чтобы ваше рабочее дерево было чистым (без изменений из фиксации HEAD).
Итак, когда вы cherry-pick
коммит, git
принимает изменения этого коммита (его diff
) и пытается применить их к вашему текущему рабочему каталогу, создавая новый коммит, эквивалентный тому, который вы cherry-pick
делаете.
Это способ повторить изменения другого коммита в другой строке истории.
Помимо внесения изменений, cherry-pick
также сохраняет информацию об исходной фиксации, например об авторе и так далее.
Наконец, cherry-pick
может получить группу коммитов для применения, и в этом случае он будет действовать как cherry-pick
, добавляя их один за другим в хронологическом порядке (сначала старые).
Проблема:
Вы хотите протестировать функцию, разработанную кем-то, но она существует только в удаленной ветке, которая, к сожалению, устарела.
Это решает проблему, потому что:
Последний момент важен, потому что первый недостаток выбора вишни заключается в том, что он вводит повторяющиеся коммиты. Но в вашем случае это не имеет значения.
Другой недостаток заключается в том, что выбранная вами фиксация может иметь функциональные зависимости на основе предыдущих коммитов (этой старой ветки).
Другими словами, его код работает только из-за других кодов других более старых коммитов (которые не собранные вишни).
Это бывает сложнее обнаружить.