Как я могу легко применить исправление к нескольким веткам релиза в Git? - PullRequest
10 голосов
/ 04 декабря 2009

Я какое-то время использовал 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, и основные ветки автоматически обновляются с помощью исправления. Это возможно или я что-то себе представлял?

Ответы [ 2 ]

6 голосов
/ 04 декабря 2009

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

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

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

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

0 голосов
/ 02 февраля 2010

Как насчет того, чтобы в этом случае зафиксировать B1.1, объединить B1.1 с B1.2, затем B1.2 с B1.3?

...