Есть полезные ответы, как удалить подмодули "локально" - Как удалить подмодуль?
Однако у меня есть проблема, когда у меня есть клоны моего репо на нескольких машинах. Два я работаю один или два раза в месяц. Поэтому, когда я обновляю ветки на них, хотя подмодули больше не отслеживаются, файлы все еще находятся в рабочей ветки, а также в .git/modules
. Несколько раз я случайно проверил некоторые. В других случаях у меня сбои сборки из-за наличия этих нежелательных файлов/каталогов.
Полагаю, я мог бы сохранить список вещей для удаления - но это не кажется правильным - как насчет другого человека сделать удаление, и у меня нет информации вне git, что удалить?
Итак, каков предложенный способ очистки клонов?
Обновить
Для меня git --version
возвращает git version 2.18.0
которая кажется текущей (это 2018-09-01).
Я добавляю воспроизводимый пример.
Настроить
mkdir parent
cd parent
git init
git submodule add https://github.com/jakesgordon/javascript-tetris.git
git commit -am add
cd ..
git clone parent clone
cd clone
git submodule update --init
Теперь оба каталога содержат подмодуль с проверенными файлами в javascript-tetris/
. .gitmodules
содержит подмодуль.
Когда я делаю
cd parent
git rm javascript-tetris
git commit -am delete
В родителе каталог javascript-tetris
ушел, а запись в .gitmodules
удалена. Но остается заполненный каталог .git/modules/javascript-tetris
.
на стороне клона:
git pull
дает предупреждение: warning: unable to rmdir 'javascript-tetris': Directory not empty
. И каталог остается, также .git/modules/javascript-tetris
все еще существует.