Git: Как я могу объединить изменения, сделанные между двумя тегами, в другую ветку?

#git #tags #branch #git-branch

#git #Теги #ветка #git-branch

Вопрос:

Я пытаюсь управлять нашим экземпляром Moodle в нашей собственной ветке репозитория Moodle. Я проверил тег «v1.9.11» ветки «MOODLE_19_STABLE», затем скопировал его в новую ветку «COE», куда я добавил нашу пользовательскую тему и т.д.

Теперь, когда тег «v1.9.12» существует, я хочу объединить коммиты до этого тега в мою ветку «COE» (а не коммиты, которые пришли после).

Могу ли я сделать это с помощью чего-то вроде git cherry-pick?

Ответ №1:

 $ git merge v1.9.12
  

объединит все коммиты до v1.9.12 включительно, и ничего после этого.

Комментарии:

1. Разве я не должен также указывать ветку, в которой есть этот тег (MOODLE_19_STABLE)? Или теги являются глобальными для репозитория?

2. @mrclay: Теги «глобальные», я думаю, вы могли бы сказать. По сути, теги и ветви идентичны — они оба являются просто именами для конкретного коммита — но ветви изменяемы (они указывают на новые коммиты по мере создания новых коммитов), тогда как теги неизменяемы.

3. Чтобы уточнить, теги не содержатся в ветке в том смысле, что имя тега допустимо только в пределах родословной этой конкретной ветви, а теги могут существовать в родословной нескольких ветвей. Это просто название для конкретного коммита.

4. Неявная часть объяснения mipadi: git merge принимает коммит в качестве аргумента. Он объединяет этот коммит (и, следовательно, всю его родословную) с вашим текущим коммитом. Теги и ветви — это два возможных способа указать коммиты.