Я уже создал ветку A, использовал git cherry-pick --no-commit master..dirtybranch, а затем просто вручную удалил изменения, касающиеся темы B и C.
Аналогичный подход будет git reset
возвращаться к точке, где dirtybrach
ответвляется от master
. Там вы можете создать новый branchA
, сохраняя все ваши изменения без изменений и без изменений. Я обычно делаю это, если я перепутал свои коммиты и хочу реструктурировать изменения в новые коммиты.
Чтобы разделить изменения на разные ветви, вы можете найти и зафиксировать все изменения для branchA
, спрятать остальные, вернуться к мастеру, создать branchB
, применить шкатулку (предоставляя вам все изменения от dirtybranach
, кроме из branchA
), найдите и передайте изменения для branchB
, и снова все это для branchC
.
Это решает ваш второй пункт. Что касается графического интерфейса, чтобы сделать все это как можно проще, я могу порекомендовать только GitKraken , в котором есть довольно удобный способ выбора фрагментов или даже отдельных строк файла, который вы хотите создать.