Что означает вишневый сбор фиксации с git?
недавно меня попросили вишневый выбрать фиксацию. Но я понятия не имею, что это значит. Так что cherry picking
коммит в ГИТ? Как вы это делаете?
6 ответов
сбор вишни в git означает выбор фиксации из одной ветви и применение ее к другой.
это в отличие от других способов, таких как merge
и rebase
которые обычно применяют много коммитов к другой ветви.
-
убедитесь, что вы находитесь в ветке, к которой хотите применить фиксацию.
git checkout master
-
выполнить следующий:
git cherry-pick <commit-hash>
Б. Н.:
-
если вы вишневый выбор из публичной ветви, вы должны рассмотреть возможность использования
git cherry-pick -x <commit-hash>
это создаст стандартизированное сообщение фиксации. Таким образом, вы (и ваши коллеги) можете отслеживать происхождение фиксации и избегать конфликтов слияния в будущем.
-
если у вас есть заметки прикрепленные к совершению, они не следуют подбирать. Принести их также, вы должны использовать:
git notes copy <from> <to>
Дополнительные ссылки:
эта цитата взята из; контроль версий с Git (Действительно отличная книга, Я призываю вас купить ее, если вы заинтересованы в git)
Edit: так как этот ответ все еще получает впечатление, я хотел бы добавить очень хороший в действии видео-учебник об этом:
Youtube: введение в Git cherry-pick
С помощью Git подбирать команду git выбирают совершить применяет изменения, внесенные названным фиксация на текущей ветке. Оно будет введите новую, отдельную фиксацию. строго говоря, используя git cherry-pick не изменяет существующую историю в репозитории; вместо этого он добавляет истории. Как и с другими операциями Git, которые внесите изменения через процесс применения diff, вам может потребоваться разрешите конфликты, чтобы полностью применить изменения из данной фиксации . Команда git cherry-pick обычно используется для введения конкретного commits from one ветвь в хранилище на другую ветвь. Ля общее использование - это коммиты вперед-или назад-порта от обслуживания филиал в филиал развития.
$ git checkout rel_2.3
$ git cherry-pick dev~2 # commit F, above
перед:
после:
сбор вишни в Git предназначен для применения некоторой фиксации из одной ветви в другую ветку. Это можно сделать, если вы например. допустил ошибку и совершил переход в неправильную ветку, но не хочу сливать всю ветку. Вы можете просто eg. верните фиксацию и сорвите ее на другой ветке.
, чтобы использовать его, вам просто нужно git cherry-pick hash
, где hash
является хэшем фиксации из другой ветви.
для полной процедуры см.: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html
cherry-pick-это функция Git. Если кто-то хочет совершить определенные коммиты в одной ветви целевой ветви, используется cherry-pick.
ГИТ подбирать
шаги, как показано ниже.
- проверка (переключиться на) целевой ветви.
-
git cherry-pick <commit id>
здесь commit id-это идентификатор активности другой ветви.Например.
git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
- нажмите на целевую ветку
можно подумать, если выбирать как аналог перебазировать, или, скорее, это удалось, как перебазировать. Под этим я подразумеваю, что он берет существующую фиксацию и восстанавливает ее, принимая в качестве отправной точки главу ветви, в которой вы сейчас находитесь.
A rebase
принимает фиксацию, у которой был родитель X, и восстанавливает фиксацию, как если бы у нее действительно был родитель Y, и это именно то, что cherry-pick
делает.
Cherry pick-это больше о том, как вы выбираете коммиты. С pull
(rebase), git неявно восстанавливает ваши локальные коммиты поверх того, что тянется к вашей ветви, но с cherry-pick
вы явно выбираете некоторые фиксации и неявно регенерируете их поверх текущей ветви.
Итак, как вы это делаете, отличается, но под капотом они очень похожи на операции-регенерация коммитов.
это похоже на копирование (откуда-то) и вставку (куда-то), но для определенных коммитов.
если вы хотите сделать исправление, например, вы можете использовать cherry-pick
характеристика.
делать cherry-pick
в ветке развития, и merge
которые фиксируются в ветке выпуска. Аналогично, сделайте cherry-pick
из ветви выпуска в master. Вуаля!--5-->