У вас есть выбор:
Вы можете просто переместить текущую структуру в то, что будет новой структурой.Затем переместите весь репо на уровень выше.git add -A
добавит все изменения, которые представляют собой кучу удалений и добавит новый файл.git status
покажет их как перемещенные.Каждый объект сохраняется один раз, независимо от того, по какому пути он находится, поэтому это не будет дорогой операцией.Это был бы самый простой вариант.В это время вы также можете поместить другие каталоги высокого уровня.
в то время как в c:
mkdir b
cd b
mkdir c
mv <all other objects from top level> c
git add -A
git commit -m "moved everything"
mv c a
# clean up
git определит тот факт, что файл был перемещен, если вы выполняете слияния и помощьВы.
Или, вы можете использовать ветку фильтра, чтобы изменить историю, если хотите, но все ваши коммиты будут иметь разные SHA1.Это может быть нежелательно.