Git1.8.5 (жовтень 2013 р.) Повинен спростити процес . Просто зробіть:
git mv A B
" git mv A B", під час переміщення підмодуля Aнавчали переміщати своє робоче дерево та коригувати шляхи у .gitmodulesфайлі .
Дивіться більше у комісії 0656781fadca1 :
В даний час використання git mvпідмодуля " " переміщує робоче дерево субмодуля в надпроект. Але налаштування шляху субмодуля .gitmodulesзалишається недоторканим, що зараз не відповідає робочому дереву і змушує команди git, які покладаються на належне path -> name mapping(як statusі diff), поводиться дивно.
Дозвольте git mvтут допомогти " " не тільки переміщенням робочого дерева підмодуля, але й оновленням параметра " submodule.<submodule name>.path" з .gitmodulesфайлу та встановлення обох етапів.
Це не відбувається, коли не .gitmodulesзнайдено жодного файлу, і видає лише попередження, коли в ньому немає розділу для цього підмодуля. Це тому, що користувач може просто використовувати звичайні посилання без .gitmodulesфайлу або вже оновив налаштування шляху вручну перед тим, як надрукувати команду "git mv" (у такому випадку попередження нагадує йому, що mvзробив би це для нього).
Лише коли .gitmodulesбуде знайдено і містить конфлікти злиття, mvкоманда не вдасться і скаже користувачеві вирішити конфлікт перед повторною спробою.
git 2.9 (червень 2016 р.) покращиться git mvдля підмодуля:
Див. Команду a127331 (19 квітня 2016 р.) Від Стефана Беллера ( stefanbeller) .
(Об’єднав Хуніо С Хамано - gitster- у комітеті 9cb50a3 , 29 квітня 2016 р.)
mv: дозволяють переміщувати вкладені підмодулі
" git mv old new" не коригував шлях для підмодуля, який живе як підкаталог всередині old/каталогу, правильно.
субмодулі, однак, повинні оновити своє посилання на каталог git, а також оновлення .gitmodulesфайлу.
.gitmodulesвручну під час переміщення підмодуля. дивіться мою відповідь нижче