Тайник (или, возможно, временная фиксация, которую вы можете позже --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
.