Как я могу легко применить исправление для нескольких ветвей релиза в Git?

Я использовал git какое-то время для моих одноманговых разработок, но до сих пор я не сталкивался с какими-то сложными проблемами ветвления, и я, кажется, забыл что-то фундаментальное, что я, без сомнения, "знал" просто после прочтения Прагматического контроля версий с помощью git Book..

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

Скажем, 1.0 был только что выпущен, 1.1 скоро будет выпущен, но я уже работаю над 1.3, например.

1.0 - released  
1.1 - finished  
1.2 - finished  
1.3 - in development  

Появляется отчет об ошибке. Обычно это будет исправлено в версии 1.3, но как мне его исправить в версии 1.1?

Насколько я знаю в svn и других "традиционных" системах управления версиями, мне нужно будет разделить B.1.1 и B.1.2 и применить изменения к каждой ветки по очереди, затем построить из каждой ветки и, наконец, применить исправление к главной ветке.

Я, кажется, помню, что git, однако, делает что-то умное: я ветвь B.1.1, делаю там изменения, делаю {что-то} и B.1.2, а главные ветки автоматически обновляются с исправлением. Возможно ли это или я представляю себе что-то?

Ответ 1

Правильный способ в этом случае:

  • убедитесь, что созданы B1.1 и B1.2 (чтобы выделить окончательные исправления в соответствующей ветке)
  • применить патч к мастеру
  • вишневый выбор, который фиксирует B1 и B2

Как упоминалось в этот поток, который бы:

гарантирует, что мастер не будет регрессировать относительно старой ветки. (Не используйте слияние, если вы не хотите объединить все изменения из одной ветки в другую, а не только одну фиксацию вы упоминаете.)

Ответ 2

Как насчет в этом случае фиксации на B1.1, слияния B1.1 в B1.2, затем B1.2 в B1.3?