Что означает cherry-picking a commit with git?



недавно меня попросили вишневый выбор фиксации. Но я понятия не имею, что это значит. Так что же делает cherry picking коммит в ГИТ? Как ты это делаешь?

1113   6  

6 ответов:

сбор вишни в git означает выбор фиксации из одной ветви и применение ее к другой.

это в отличие от других способов, таких как merge и rebase которые обычно применяют много коммитов на другую ветку.

  1. убедитесь, что вы находитесь в ветке, к которой хотите применить фиксацию.

    git checkout master
    
  2. выполнить следующее:

    git cherry-pick <commit-hash>
    

N. B.:

  1. если вы вишневый выбор из общественной ветви, вы должны рассмотреть возможность использования

    git cherry-pick -x <commit-hash>
    

    это создаст стандартизированное сообщение фиксации. Таким образом, вы (и ваши коллеги) все еще можете отслеживать происхождение фиксации и можете избежать конфликтов слияния в будущем.

  2. если у вас есть заметки прикрепленные к совершению, они не следуют подбирать. Принести их тоже нужно использовать:

    git notes copy <from> <to>
    

Дополнительные ссылки:

эта цитата взята из; контроль версий с Git (Действительно отличная книга, Я призываю вас купить ее, если вы заинтересованы в git)

Edit: так как этот ответ все еще производит впечатление, я хотел бы добавить очень хороший в действии видео-учебник об этом:

Youtube: введение в Git cherry-pick

С помощью Git cherry-pick команда git cherry-pick commit применяет изменения, внесенные названным фиксация на текущей ветке. Оно будет введите новую, отличную фиксацию. строго говоря, с помощью git cherry-pick не изменяет существующую историю в репозитории; вместо этого, он добавляет к истории. Как и в других операциях Git, которые внести изменения с помощью процесса применения diff, возможно, потребуется разрешите конфликты, чтобы полностью применить изменения из данной фиксации . Команда git cherry-pick обычно используется для введения конкретного совершает от одного ответвление внутри репозитория на другую ветвь. Один общее использование состоит в том, чтобы переадресовать-или назад-порт фиксирует от обслуживания филиал в ветке развития.

$ git checkout rel_2.3
$ git cherry-pick dev~2 # commit F, above

перед: before

после: after

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

, чтобы использовать его, вам просто нужно 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.
ГИТ подбирать шаги, как показано ниже.

  1. проверка (переход к) целевой ветви.
  2. git cherry-pick <commit id>
    

    здесь commit id-это идентификатор активности другого branch.Eg.

    git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
    
  3. нажмите на целевую ветку

визит https://git-scm.com/docs/git-cherry-pick

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

A rebase принимает фиксацию, которая имела родителя X и восстанавливает фиксацию, как если бы она на самом деле имела родителя Y, и это именно то, что a cherry-pick делает.

Cherry pick-это больше о том, как вы выбираете коммиты. С pull (rebase), git неявно восстанавливает ваши локальные коммиты поверх того, что тянется к вашей ветке, но с cherry-pick вы явно выберете какой коммит(Ы), и неявно регенерировать его (их) на верхней части вашего текущего филиала.

таким образом, как вы это делаете отличается, но под капотом они очень похожи операции - регенерация коммитов.

это похоже на копирование (откуда-то) и вставку (куда-то), но для конкретных коммитов.

если вы хотите сделать исправление, например, вы можете использовать cherry-pick характеристика.

делать cherry-pick в ветке развития, и merge это фиксация в ветке выпуска. Аналогично, сделайте cherry-pick из ветви выпуска в мастер. Вуаля

Comments

    Ничего не найдено.