Я использую git rebase --onto target source foo
, чтобы переместить ветку foo
из ветви source
в ветку target
. Знаете ли вы, можно ли использовать хеш-значения вместо названий ветвей (если они не указаны), например: git rebase --onto ab91c f4242 foo
?
В качестве обходного пути я временно добавил имена веток в соответствующие объекты коммитов. Но это может быть лаваш, если у вас много веток, которые нужно перебазировать.
Пример ситуации:
° bb42a
° ab91c
° 979c2
/° fb648 foo
° f4242 --
° 333c9
После git rebase --onto ...
° bb42a
/° fb648 foo
° ab91c --
° 979c2
° f4242
° 333c9
Справочная информация:
Объясненная проблема очень распространена, если вы используете svn-сервер в качестве удаленного хранилища. Все объекты, которые вы фиксируете, переписываются, поскольку svn-id будет добавляться каждый раз, когда вы git svn dcommit
добавляете в svn-репозиторий. Это отделяет все остальные ветви от их прежнего master .