Есть два решения, которые не были упомянуты, и которые вы можете использовать: используйте ветку темы или используйте cherry-picking .
Тема ветки решения
В решении для ветки темы вы переключаетесь на ветку 'нечто', создаете ветку для исправления ошибки например. 'thing-bugfix ', объединить эту ветку с'thing' (исправление ошибки), а затем объединить эту ветку с 'экспериментальной'.
$ 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).
Вишня - исправление ошибки
Решение cherry-picking полезно, если вы заметили позже , что созданное вами исправление (например, в ветви разработки) будет полезно и в другой ветви (например, в стабильной ветви). В вашем случае вы бы исправили ветку «что-то»:
$ git checkout something
[edit, edit, edit]
$ git commit
$ git checkout experimental
Тогда вы заметили, что исправление, которое вы исправили в ветке «что-то», должно быть также в ветке «эксперимент». Допустим, это исправление было коммитом «А» (например, «что-то», если вы ничего не фиксировали поверх «чего-то», но это может быть, например, «что-то ~ 2» или «c84fb911»):
$ git checkout experimental
$ git cherry-pick A
(вы можете использовать опцию --edit
для git cherry-pick , если вы хотите отредактировать сообщение коммита до исправления вишни-выбранного исправления).