в git, если исправление применяется к одной версии, как оно применяется к более поздним версиям? - PullRequest
1 голос
/ 23 декабря 2011

при использовании git в качестве хранилища, предполагая, что голова v1.6

если я найду ошибку в v1.0

git stash save "interruption "  # is this necessary?
git checkout v1.0
vi badfile.c
git commit -a -m 'bugger fixed'

как исправление распространяется на последующие версии?

Ответы [ 2 ]

5 голосов
/ 23 декабря 2011

Слияние с головой, перебазирование на голову или вишневый кир.

Опция A:

1.0-----1.6-----merge
  \             /
   \           /
    -fix-------

Опция B:

 1.0-----1.6-----fix (rebased)
   \             
    \           
     -fix

Опция C:

1.0-----1.6-----fix (cherrypicked)
  \             
   \           
    -fix
3 голосов
/ 23 декабря 2011

Тайник (или, возможно, временная фиксация, которую вы можете позже --amend to) необходим для переключения веток.

Вы должны вырезать ветку из тега, чтобы git checkout -b v1.0-bugfix v1.0 (я предпочитаю называть ветку чем-то вроде проблемы42, где 42 - номер ошибки).

Затем исправьте изменение в badfile.c

git checkout master (при условии, что вы были мастером до того, как переключились на v1.0-bugfix.

git merge v1.0-bugfix чтобы внести изменения в текущую версию. Вам нужно будет объединить его с ветвями, где вы хотите, чтобы исправление присутствовало.

git stash pop чтобы вернуть изменения, которые вы оставили в стороне.

Дерево теперь будет выглядеть примерно так:

          (v1.0-bugfix)--------------------------------------------------(fix badfile)
         /                                                                   \   
        /                                                                     \  
       /                                                                       \ 
o---o---(v1.0)---o---(v1.1)---o---o---(v1.2)---(v1.3)---(v.14)---o---(current-head)---(merge)---(head-with-fix)

Я отметил интересные коммиты с (message) и обычные с o.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...