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
вручну під час переміщення підмодуля. дивіться мою відповідь нижче