Я прочитал как сам подмодуль git:
# Delete the relevant section from the .gitmodules file.
git config -f .gitmodules --remove-section submodule.$submodulepath
# Delete the relevant section from .git/config
git config -f .git/config --remove-section submodule.$submodulepath
git rm --cached path_to_submodule # no trailing slash
git commit
rm -rf path_to_submodule
Я могу это сделать. Но когда кто-то еще делает git pull
, как мы гарантируем, что подмодуль удаляется из их системы? Изменение .gitmodules
происходит с тягой, но не намного больше, насколько я могу судить. Таким образом, человек, который потянул, все равно должен был бежать
git config -f .git/config --remove-section submodule.$submodulepath
rm -rf path_to_submodule
Это правильно? В небольшой команде разработчиков, я думаю, вы могли бы просто сказать всем, чтобы они выполняли эти команды, но это было не так идеально.
Есть ли какая-нибудь волшебная команда, которая автоматизирует это? В частности, мне бы хотелось, чтобы какой-то стандартный способ автоматизировать это в сценариях развертывания. С головы до ног я не уверен, как скрипты даже знают, что есть еще один субмодуль, чем раньше. (Не особенно привлекательны) варианты, которые возникают у меня:
- выполняет различие в
.gitmodules
до и после нажатия - удалите все подмодули, а затем запустите
git submodule update --init
каждое развертывание. - Subodule в конечном итоге становится невоспроизводимым файлом после pull, поэтому будет работать, чтобы удалить все неподготовленные каталоги, которые содержат подкаталог
.git
после натяжения, но вы можете удалить нужные вещи чтобы сохранить этот путь.
Любые лучшие варианты оценены.