Вы можете использовать два решения, о которых еще не упоминалось: использовать ветку темы или использовать выбор вишен.
Решение тематической ветки
В решении ветки темы вы переключаетесь на ветку «что-то», создаете ветку для исправления ошибки, например. 'something-bugfix', слить эту ветвь с 'something' (исправление ошибки), затем слить эту ветвь с 'experimental'.
$ git checkout -b something-fix something
[edit, commit]
$ git checkout something
$ git merge something-fix
$ git checkout experimental
$ git merge something-fix
[fix conflicts if necessary and commit]
См. также Раннее разрешение конфликтов/зависимостей между ветками темы и Никогда не сливаться обратно и, возможно, также Коммит в другую ветку сообщения в блоге Junio C Hamano (сопровождающий git).
Вишневый сбор исправления
Решение выбор вишни полезно, если вы заметили позже, что созданное вами исправление (например, в ветке разработки) будет полезно и в другой ветке (например, в стабильной ветке). В вашем случае вы бы исправили ветку «что-то»:
$ git checkout something
[edit, edit, edit]
$ git commit
$ git checkout experimental
Затем вы заметили, что исправление, которое вы зафиксировали в ветке «что-то», должно быть также и в ветке «experimenta». Предположим, что это исправление было коммитом «A» (например, «что-то», если вы ничего не коммитили поверх «чего-то», но это может быть, например, «что-то ~ 2» или «c84fb911»):
$ git checkout experimental
$ git cherry-pick A
(вы можете использовать опцию --edit для git cherry-pick, если вы хотите отредактировать сообщение коммита перед фиксацией выбранного исправления).
person
Jakub Narębski
schedule
27.08.2009