Вопрос: Что означает принятие вишни с помощью git?


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


1278


источник


Ответы:


Выбор вишни в 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>
    

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


1535



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

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

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


167



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

Чтобы использовать его, вам просто нужно git cherry-pick hash, где hashявляется хешем фиксации из другой ветви.

Полную процедуру см. В: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html


124



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

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

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

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

Посещение https://git-scm.com/docs/git-cherry-pick


21



You can think if a cherry pick as similar to a rebase, or rather it's managed like a rebase. By this, I mean that it takes an existing commit and regenerates it taking, as the starting point, the head of the branch you're currently on.

A rebase takes a commit that had a parent X and regenerates the commit as if it actually had a parent Y, and this is precisely what a cherry-pick does.

Cherry pick is more about how you select the commits. With pull (rebase), git implicitly regenerates your local commits on top of what's pulled to your branch, but with cherry-pick you explicitly choose some commit(s), and implicitly regenerate it (them) on top of your current branch.

So the way you do it differs, but under the hood they are very similar operations - the regeneration of commits.


7



It's kind of like Copy (from somewhere) and Paste (to somewhere), but for specific commits.

If you want to do a hot fix, for example, then you can use the cherry-pick feature.

Do your cherry-pick in a development branch, and merge that commit to a release branch. Likewise, do a cherry-pick from a release branch to master. Voila


2