Вот один из способов, которым вы можете сделать это, и при этом поддерживать некоторые отношения между мастером и ветвями. Возможно, вы захотите написать сценарий. Извините, если я использую операторы bash, а не командную строку Windows для некоторых моих примеров
Сначала клонируйте весь репозиторий, как в первом примере, с ветвями в качестве каталогов.
Это перемещает ствол к корню. (надеюсь, что нет конфликтов с папками вашей ветки)
mv trunk/*.* .
Зафиксируйте своего нового мастера
git commit -a -m "refactoring master"
создание новой ветки
git checkout -b feature-login
Копирование файлов ветки поверх корневых файлов
mv feature-login/*.* .
Они здесь больше не нужны
rm -rf [all_branch_directories]
Зафиксируйте ветку
git commit -a -m "refactoring feature-login"
назад к мастеру
git checkout master
Сделай все снова
git checkout -b next_branch
и т.д.. и т.д ..
Наконец, в конце
git checkout master
rm -rf [all_branch_directories]
git commit -a -m "refactoring master"
Это не идеально, но в итоге все ваши ветви будут клонированы от мастера и разнесены более или менее соответствующим образом. AFAIK git должен подойти, если вы перезаписали файл другим файлом, но содержимое не изменилось, что позволяет работать всем этим.
Недостатком является то, что вы не будете удалять файлы в ветвях, которые были удалены из ствола. Это может или не может быть проблемой для вас ...