У меня есть следующая структура git
- git-repo a
-- subdirectory 2015
--- git-submodule b
-- git-submodule c
--- git-submodule d
Я хотел бы переместить подмодуль git c в папку 2015. Я знаю "грязные способы" для этого (включая модификацию .git/config и изменение gitdir в нескольких файлах в файлах .git/modules)
Недавно я прочитал, что git mv должен иметь возможность сделать это, т.е. запустить
git mv c 2015/
Это отлично работает для репозиториев, в которых нет вложенного подмодуля (d в моем случае). Однако, когда я запускаю эту команду в моем каталоге, я получаю ошибки, например
fatal: Not a git repository: d/../../.git/modules/c/modules/d
fatal: 'git status --porcelain' failed in submodule 2015/c
(обратите внимание, что эта ошибка возникает при статусе git после выполнения вышеупомянутого перемещения)
Кто-нибудь знает о чистом методе для этого перемещения (т.е. не требует ручного изменения путей в файлах .git/modules)?
Изменить: (6/10/2015)
Мое текущее лучшее решение, которое не связано с модификациями любого из конфигурационных файлов git (сначала убедитесь, что все изменения d были зафиксированы и помещены куда-то)
rm c/d -rf
git mv c 2015
cd 2015/c
git submodule update
Изменить: (8/10/2015)
Еще менее навязчивое обходное решение
git mv c 2015
rm 2015/c/d/.git
cd 2015/c
git submodule update