¿Cómo elimino un submódulo Git?
Por cierto, ¿hay alguna razón que no pueda simplemente hacer
git submodule rm whatever
?
git
git-submodules
R. Martinho Fernandes
fuente
fuente
git rm modulename
yrm -rf .git/modules/modulename
.git/config
. La respuesta aceptada muestra la forma actualizada de eliminar completamente un submódulo. También se explica más sucintamente en esta respuesta: stackoverflow.com/a/36593218/1562138Respuestas:
Desde git1.8.3 (22 de abril de 2013) :
El proceso de eliminación también utiliza
git rm
(desde git1.8.5 de octubre de 2013).Resumen
El proceso de eliminación de 3 pasos sería:
Explicación
rm -rf
: Esto se menciona en la respuesta de Daniel Schroeder y Eonil lo resume en los comentarios :git rm
: Ver commit 95c16418 :git submodule deinit
: Se deriva de este parche :Esto tiene cuidado si los pasos de (de) inicialización (
.git/config
y.git/modules/xxx
)Desde git1.8.5, la
git rm
tomas también se preocupan de la:add
' paso que registra la url de un submódulo en el.gitmodules
archivo: es necesario eliminarlo por usted.git rm --cached path_to_submodule
(sin barra diagonal)Eso eliminará ese directorio almacenado en el índice con un modo especial "160000", marcándolo como un directorio raíz de submódulo .
Si olvida el último paso e intenta agregar lo que era un submódulo como directorio normal, recibirá un mensaje de error como:
Nota: desde Git 2.17 (Q2 2018), git submodule deinit ya no es un script de shell.
Es una llamada a una función C.
Ver commit 2e61273 , commit 1342476 (14 de enero de 2018) por Prathamesh Chavan (
pratham-pc
) .(Fusionada por Junio C Hamano -
gitster
- en commit ead8dbe , 13 feb 2018)fuente
submodule deinit
?.gitmodules
debería estar bien, pero aún así verificaría dos veces cualquier cosa con el.git
directorio (es decir, la configuración local , dentro de su repositorio local: eso no es modificado por agit pull
).gitmodules
entrada y la eliminación de la entrada especial en el índice, y empuja ese repositorio, otros pueden extraerlo y ese submódulo desaparecerá.git rm submodule
hace exactamente lo que quieres como ya han dicho otras personas.A través de la página Git Submodule Tutorial :
Para eliminar un submódulo, debe:
.gitmodules
archivo..gitmodules
cambios:git add .gitmodules
.git/config
.git rm --cached path_to_submodule
(sin barra inclinada)..git
directorio del submódulo :rm -rf .git/modules/path_to_submodule
git commit -m "Removed submodule <name>"
rm -rf path_to_submodule
Ver también : pasos alternativos a continuación .
fuente
git submodule rm
simplemente elimina el registro de submódulos, y se sorprendería si el comando también eliminara el repositorio local. Cualquier cambio local se perdería irremediablemente. Y tal vez otra persona pensaría que solo se eliminarían los archivos.Solo una nota. Desde git 1.8.5.2, dos comandos harán:
Como señaló correctamente la respuesta de @Mark Cheverton, si la segunda línea no se usa, incluso si eliminó el submódulo por ahora, la carpeta remanente .git / modules / the_submodule evitará que el mismo submódulo se vuelva a agregar o reemplazar en el futuro . Además, como mencionó @VonC,
git rm
hará la mayor parte del trabajo en un submódulo.--Actualización (07/05/2017) -
Solo para aclarar,
the_submodule
es la ruta relativa del submódulo dentro del proyecto. Por ejemplo, essubdir/my_submodule
si el submódulo está dentro de un subdirectoriosubdir
.Como se señaló correctamente en los comentarios y otras respuestas , los dos comandos (aunque funcionalmente suficientes para eliminar un submódulo), dejan un rastro en la
[submodule "the_submodule"]
sección.git/config
(a partir de julio de 2017), que se puede eliminar con un tercer comando:fuente
.git/config
. Consulte stackoverflow.com/a/36593218/1562138 para ver la forma completa de eliminar un submódulo.git init && git submodule add <repository> && git rm <name>
deja atrás la.git/config
entrada y el.git/modules/<name>
directorio y sus contenidos. ¿Quizás no inicializó el submódulo antes de eliminarlo?La mayoría de las respuestas a esta pregunta son obsoletas, incompletas o innecesariamente complejas.
Un submódulo clonado usando git 1.7.8 o posterior dejará como máximo cuatro rastros de sí mismo en su repositorio local. El proceso para eliminar esos cuatro rastros viene dado por los tres comandos a continuación:
fuente
Pasos simples
git config -f .git/config --remove-section submodule.$submodulename
git config -f .gitmodules --remove-section submodule.$submodulename
git rm --cached $submodulepath
rm -rf $submodulepath
rm -rf .git/modules/$submodulename
Tenga en cuenta:
$submodulepath
no contiene barras inclinadas iniciales o finales.Antecedentes
Cuando lo hace
git submodule add
, solo lo agrega.gitmodules
, pero una vez que lo hizogit submodule init
, lo agregó.git/config
.Entonces, si desea eliminar los módulos, pero poder restaurarlo rápidamente, haga lo siguiente:
Es una buena idea hacer
git rebase HEAD
primero ygit commit
al final, si pones esto en un script.También eche un vistazo a una respuesta a ¿Puedo despoblar un submódulo Git? .
fuente
for dir in directory/*; do git rm --cached $dir; done
.git config -f .git/config -l | cut -d'=' -f1 | grep "submodule.$MODPATH" | sed 's/^submodule\.//' | sed 's/\.url$//'
- - parece que realmente tiene que hacer esto en caso de que haya algo desordenado, de lo contrario, sologit submodule | grep -v '^+' | cut -d' ' -f3
git submodule | grep '^+' | cut -d' ' -f2
submodulename
entre comillas dobles"submodulename"
.. refiriéndose al.git/config
archivoAdemás de las recomendaciones, también tuve que
rm -Rf .git/modules/path/to/submodule
poder agregar un nuevo submódulo con el mismo nombre (en mi caso, estaba reemplazando un tenedor con el original)fuente
Para eliminar un submódulo agregado usando:
Correr:
Eso es.
Para versiones antiguas de git (alrededor de ~ 1.8.5) use:
fuente
git rm
Todavía deja cosas adentro.git/modules/
. (2.5.4)git rm
, no lo hace; Una prueba rápida con 2.5.4 en mi mac actualiza el archivo .gitmodules, como se describe en la documentación aquí: git-scm.com/docs/git-rm#_submodules ... pero si ha encontrado algún tipo de combinación de plataforma / versión donde esto no sucede, probablemente deberías presentar un error al respecto.git rm
deja cosas en.git/modules/
dir y.git/config
file (ubuntu, git 2.7.4). Otra respuesta funciona al 100%: stackoverflow.com/a/36593218/4973698Debe eliminar la entrada en
.gitmodules
y.git/config
, y eliminar el directorio del módulo del historial:Si escribes en la lista de correo de git, probablemente alguien hará un script de shell por ti.
fuente
Puede usar un alias para automatizar las soluciones proporcionadas por otros:
Pon eso en tu configuración de git, y luego puedes hacer:
git rms path/to/submodule
fuente
git clone https://github.com/hilbix/empty.git; cd empty; git submodule add https://github.com/hilbix/empty.git one; git mv one two; git rms two
. SEGUNDO: debe ejecutar esto desde la ruta correcta.git
los alias deberían funcionar en cualquier parte del árbol de trabajo (o fallar con gracia). TERCERO:git config -f .git/config
falla dentro de los submódulos, ya que.git
generalmente hay un archivo allí.Para resumir, esto es lo que debe hacer:
Establecer
path_to_submodule
var (sin barra inclinada):path_to_submodule=path/to/submodule
Elimine la línea relevante del archivo .gitmodules:
git config -f .gitmodules --remove-section submodule.$path_to_submodule
Eliminar la sección relevante de .git / config
git config -f .git/config --remove-section submodule.$path_to_submodule
Desensamblar y eliminar $ path_to_submodule solo del índice (para evitar perder información)
git rm --cached $path_to_submodule
Rastree los cambios realizados en .gitmodules
git add .gitmodules
Cometer el superproyecto
git commit -m "Remove submodule submodule_name"
Eliminar los archivos de submódulos ahora sin seguimiento
rm -rf $path_to_submodule
rm -rf .git/modules/$path_to_submodule
fuente
git submodule update
. Y si las rutas de los submódulos no se actualizaron correctamente (git arroja un error), elimínelas:rm -rf .git/modules/<submodule> && rm -rf <submodule> && git submodule update
Si el submódulo se agregó accidentalmente porque agregó, confirmó y empujó una carpeta que ya era un repositorio Git (contenido
.git
), no tendrá un.gitmodules
archivo para editar ni nada.git/config
. En este caso todo lo que necesitas es:FWIW , también eliminé la
.git
carpeta antes de hacer elgit add
.fuente
Encontré
deinit
trabajos buenos para mí:De git docs :
fuente
git
s , que saben dedeinit
, como la otra respuesta quita el.git/modules/submodule
directorio demasiado pronto, lo que parece hacer más recientegit
s fallar ahora o después. Además (vea mi comentario allí), la eliminación.git/modules/submodule
podría ser la ruta incorrecta, por lo que este es un paso peligroso, que se tomará más adelante solo cuando segit
queje (o si está 299% seguro de que lo que quiere es la ruta correcta y realmente necesaria).git commit
confirmar cambios por etapas en el directorio de trabajo:modified .gitmodules
ydeleted <submodule-path>
.Después de experimentar con todas las diferentes respuestas en este sitio, terminé con esta solución:
Esto restaura exactamente el mismo estado que antes de agregar el submódulo. Puede agregar de inmediato el submódulo nuevamente, lo que no fue posible con la mayoría de las respuestas aquí.
Esto te deja con un pago limpio sin cambios para confirmar.
Esto fue probado con:
fuente
git rm --cached $path
entonces enrm -rf $path
lugar degit rm -r $path
?git submodule add https://github.com/hilbix/empty.git 'dangerous .. submodule'
-> cuando intentas eliminar 'submódulo peligroso ...' con tu script,rm -rf ..
lo más probable es que no sea lo que quieres ...Lo que estoy haciendo actualmente en diciembre de 2012 (combina la mayoría de estas respuestas):
fuente
Aquí esta lo que hice :
1.) Eliminar la sección relevante del archivo .gitmodules. Puede usar el siguiente comando:
2.) Etapa los
.gitmodules
cambios3.) Eliminar la sección relevante de
.git/config
. Puede usar el siguiente comando:4.) Elimine el gitlink (sin barra inclinada):
5.) Limpieza de
.git/modules
:6.) Comprometerse:
7.) Eliminar los archivos de submódulos ahora sin seguimiento
fuente
fatal: no submodule mapping found in .gitmodules for path 'submodule_name'
en el paso 3. Sin embargo, ambos pasos fueron necesarios. (git v2.8.2)Recientemente descubrí un proyecto git que incluye muchos comandos útiles relacionados con git: https://github.com/visionmedia/git-extras
Instálalo y escribe:
Entonces las cosas están hechas. El directorio de submódulos se eliminará de su repositorio y seguirá existiendo en su sistema de archivos. A continuación, puede confirmar el cambio como:
git commit -am "Remove the submodule"
.fuente
git delete-submodule
, ya quegit-extras
debe estar en el camino al trabajo. También tenga en cuenta que recomiendo no usargit-extras
, ya que muchas partes son extremadamente defectuosas y peligrosas . Esgit-delete-submodule
posible que IE elimine la ruta incorrecta a continuación.git/modules/*
, ya que supone que el módulo y la ruta son idénticos (que a menudo no es el caso), y no funciona correctamente si intenta eliminar un submódulo dentro de un submódulo.git-extras
puede ser útil al 99%, pero no se queje si las cosas salen mal al usarlo. ¡USTED HA SIDO ADVERTIDO!Tuve que seguir los pasos de John Douthat un paso más allá y
cd
en el directorio del submódulo, y luego eliminar el repositorio de Git:Entonces podría confirmar los archivos como parte del repositorio principal de Git sin la referencia anterior a un submódulo.
fuente
git rm --cache
paso.Estos son los 4 pasos que encontré necesarios o útiles (los importantes primero):
En teoría ,
git rm
en el paso 1 debería ocuparse de ello. Con suerte, la segunda parte de la pregunta de OP se puede responder positivamente un día (que se puede hacer en un comando).Pero a partir de julio de 2017, paso 2 es necesario para eliminar datos,
.git/modules/
de lo contrario, por ejemplo, no puede agregar el submódulo en el futuro.Probablemente pueda salirse con los dos pasos anteriores para git 1.8.5+ como señaló la respuesta de tinlyx , ya que todos los
git submodule
comandos parecen funcionar.El paso 3 elimina la sección para
the_submodule
en el archivo.git/config
. Esto debe hacerse para completar. (La entrada puede causar problemas para versiones anteriores de git, pero no tengo una para probar).Para esto, la mayoría de las respuestas sugieren usar
git submodule deinit
. Me resulta más explícito y menos confuso de usargit config -f .git/config --remove-section
. De acuerdo con la documentación de git-submodule ,git deinit
:Por último, pero no menos importante, si no lo hace
git commit
, recibirá / puede recibir un error al hacerlogit submodule summary
(a partir de git 2.7):Esto es independientemente de si realiza los pasos 2 o 3.
fuente
fuente
Acabo de encontrar el archivo oculto .submodule (olvidé el nombre exacto), tiene una lista ... puedes borrarlos individualmente de esa manera. Acabo de tener uno, así que lo eliminé. Simple, pero podría estropear a Git, ya que no sé si hay algo adjunto al submódulo. Parece correcto hasta ahora, aparte del problema de actualización habitual de libetpan, pero eso (con suerte) no está relacionado.
Noté que nadie publicó borrado manual, así que agregó
fuente
.gitmodules
Con git 2.17 y superior es solo:
fuente
git 2.17.1
nigit 2.20.1
. Sin embargo, engit rm
lugar degit add
trabajar para ambos. Notas:-f
no es necesario si las cosas están limpias. Asegúrese de no usar nunca opciones congit
si desea protegerse contra la pérdida involuntaria de datos. También tenga en cuenta que esto deja.git/modules/{module_name}
en su lugar. Es una buena práctica mantenerlo allí porquegit
imprime la ayuda correcta (!) Sobre cómo proceder si algo está bloqueado debido a esto.Si acaba de agregar el submódulo y, por ejemplo, simplemente agregó el submódulo incorrecto o lo agregó al lugar incorrecto, simplemente
git stash
elimine la carpeta. Esto supone que agregar el submódulo es lo único que hizo en el repositorio reciente.fuente
Para el beneficio del lector, esto aquí trata de resumirlo y brindar una guía paso a paso sobre cómo hacerlo si las cosas no funcionan como se esperaba. A continuación se muestra la forma probada y segura para la
git
versión2.17
y superior para deshacerse de un submódulo :2.20.1
y Ubuntu 18.042.17.1
."$submodule"
es solo para enfatizar dónde poner el nombre, y que hay que tener cuidado con los espacios y similares"$submodule"
con la forma de Windows de una ruta de acceso especificada correctamente al submódulo. (No soy Windows)Tenga en cuenta que
es el inverso directo de
pero
También es todo lo contrario a
porque algunos comandos básicamente necesitan hacer más que una sola cosa:
git submodule deinit -- module
.git/config
git rm
.gitmodules
git submodule add
.git/modules/NAME/
git submodule init
, así que actualizaciones.git/config
git submodule update
, por lo tanto, extrae el módulo de forma no recursiva.gitmodules
git submodule update --init --recursive -- module
Esto no puede ser completamente simétrico, ya que mantenerlo estrictamente simétrico no tiene mucho sentido. Simplemente no hay necesidad de más de dos comandos. También "extraer los datos" está implícito, porque lo necesita, pero no se elimina la información almacenada en caché, porque esto no es necesario en absoluto y podría borrar datos valiosos.
Esto realmente es desconcertante para los recién llegados, pero básicamente es algo bueno:
git
simplemente hace lo obvio y lo hace bien, y ni siquiera trata de hacer más.git
es una herramienta que debe hacer un trabajo confiable, en lugar de ser simplemente otra "Eierlegende Wollmilchsau" ("Eierlegende Wollmilchsau" se traduce para mí como "una versión malvada de una navaja suiza").Entonces entiendo las quejas de la gente, diciendo "¿Por qué no hace
git
lo obvio por mí?". Esto se debe a que "obvio" aquí depende del punto de vista. La fiabilidad en todas y cada una de las situaciones es mucho más importante. Por lo tanto, lo que es obvio para usted a menudo no es lo correcto en todas las situaciones técnicas posibles. Recuerde que: AFAICSgit
sigue el camino técnico, no el social. (De ahí el nombre inteligente: git)Si esto falla
Los comandos anteriores pueden fallar debido a lo siguiente:
git
es demasiado viejo. Luego usa uno nuevogit
. (Vea a continuación cómo hacerlo).git clean
sentido. Luego, primero limpie su submódulo usando ese comando. (Vea abajo.)git
. Entonces estás en el lado oscuro y las cosas se ponen feas y complicadas. (Quizás usar otra máquina lo arregle).git
usuario avanzado).Posibles soluciones siguen.
Usa una nueva
git
Si su máquina es demasiado vieja, no hay
submodule deinit
en sugit
. Si no desea (o no puede) actualizar sugit
, ¡simplemente use otra máquina con una más nuevagit
!git
está destinado a estar completamente distribuido, por lo que puede usar otrogit
para hacer el trabajo:workhorse:~/path/to/worktree$ git status --porcelain
no debe dar salida a nada! Si es así, ¡primero limpia las cosas!workhorse:~/path/to/worktree$ ssh account@othermachine
othermachine:~$ git clone --recursive me@workhorse path/to/worktree/.git TMPWORK && cd TMPWORK
othermachine:~/TMPWORK$ git commit . -m . && exit
workhorse:~/path/to/worktree$ git fetch account@othermachine:TMPWORK/.git
workhorse:~/path/to/worktree$ git merge --ff-only FETCH_HEAD
. Si esto no funciona, usegit reset --soft FETCH_HEAD
git status
esté limpio nuevamente. Puede hacerlo, porque lo ha tenido limpio antes, gracias al primer paso.Esto
othermachine
puede ser alguna VM, o algún Ubuntu WSL bajo Windows, lo que sea. Incluso unchroot
(pero supongo que usted no es root, porque si loroot
fuera, debería ser más fácil actualizar a la más recientegit
).Tenga en cuenta que si no puede
ssh
entrar, existen muchas formas de transportargit
repositorios. Puede copiar su árbol de trabajo en una memoria USB (incluido el.git
directorio) y clonar desde la memoria. Clone la copia, solo para que las cosas vuelvan a estar limpias. Esto podría ser un PITA, en caso de que sus submódulos no sean accesibles directamente desde otra máquina. Pero también hay una solución para esto:Puede usar esta multiplicación, y esto se guarda en
$HOME/.gitconfig
. Algo comoreescribe URL como
dentro
Es fácil si comienza a acostumbrarse a
git
funciones potentes como esta.Primero limpiar las cosas
La limpieza manual es buena, porque de esta manera quizás detecte algunas cosas que olvidó.
git status
ygit clean -ixfd
es tu amigorm
ydeinit
siempre que pueda. Las opciones (como-f
) paragit
son buenas si eres un profesional. Pero como vino aquí, probablemente no tenga tanta experiencia en elsubmodule
área. Así que más vale prevenir que curar.Ejemplo:
Ya ves, no hay
-f
necesidad desubmodule deinit
. Si las cosas están limpias, en ciertogit clean
sentido. También tenga en cuenta quegit clean -x
no es necesario. Esto significa quegit submodule deinit
elimina incondicionalmente los archivos no rastreados que se ignoran. Esto suele ser lo que quieres, pero no lo olvides. A veces, los archivos ignorados pueden ser valiosos, como los datos almacenados en caché que tardan horas o días en calcularse nuevamente.¿Por qué nunca eliminar
$GIT_DIR/modules/<name>/
?Probablemente las personas quieran eliminar el repositorio en caché, porque tienen miedo de tener un problema más tarde. Esto es cierto, pero encontrarse con ese "problema" es la forma correcta de resolverlo. Debido a que la solución es fácil y si se hace bien, podrá vivir feliz para siempre. Esto evita problemas más engorrosos que cuando elimina los datos usted mismo.
Ejemplo:
La última línea muestra el siguiente error:
¿Por qué este error? Porque
.git/modules/two/
anteriormente se rellenó desde https://github.com/hilbix/empty.git y ahora se volverá a llenar de otra cosa, a saber, https://github.com/hilbix/src.git . No verá esto si lo vuelve a llenar desde https://github.com/hilbix/empty.git¿Qué hacer ahora? Bueno, ¡haz exactamente lo que te dijeron! Utilizar
--name someunusedname
.gitmodules
entonces parecels -1p .git/modules/
daDe esta manera, en el futuro, puede cambiar ramas / commit hacia adelante y hacia atrás y nunca volverá a tener problemas , debido a que
two/
tiene dos repositorios ascendentes diferentes (y posiblemente incompatibles). Y lo mejor es: también mantiene ambos en caché localmente.git
).Sin embargo, si eliminó el directorio almacenado en caché, ambos pagos diferentes se toparán entre sí, porque no utilizará las
--name
opciones, ¿verdad? Entonces, cada vez que realice el pago, tal vez tenga que eliminar el.git/modules/<module>/
directorio una y otra vez. Esto es extremadamente engorroso y hace que sea difícil usar algo asígit bisect
.Por lo tanto, hay una razón muy técnica para mantener este directorio de módulos como marcador de posición. Las personas que recomiendan eliminar algo a continuación
.git/modules/
no lo saben mejor o se olvidan de decirle que esto hace que las funciones potentes seangit bisect
casi imposibles de usar si cruza esa incompatibilidad de submódulos.Otra razón se muestra arriba. Mira el
ls
. Que ves alliBueno, la segunda variante del módulo
two/
no está debajo.git/modules/two/
, ¡está debajo.git/modules/someunusedname/
! ¡Así que cosas comogit rm $module; rm -f .git/module/$module
están totalmente mal! ¡Debes consultarmodule/.git
o.gitmodules
encontrar lo correcto para eliminar!Entonces, no solo la mayoría de las otras respuestas caen en esta peligrosa trampa, incluso las
git
extensiones muy populares tenían este error ( ahora está solucionado )! ¡Así que mejor mantenga sus manos en el.git/
directorio si no lo hace exactamente, lo que está haciendo!Para tu información, probablemente lo hayas adivinado: hilbix es mi cuenta de GitHub.
fuente
Para resumir, esto es lo que debe hacer:
Establezca path_to_submodule var (sin barra inclinada):
Elimine la línea relevante del archivo .gitmodules:
Eliminar la sección relevante de .git / config
Desensamblar y eliminar $ path_to_submodule solo del índice (para evitar perder información)
Rastree los cambios realizados en .gitmodules
Cometer el superproyecto
Eliminar los archivos de submódulos ahora sin seguimiento
Ver también: líneas de guía alternativas
fuente
git rm --cached $path_to_submodule
ygit add .gitmodules
no? Obtuve un error en el primer comando:fatal: Please stage your changes to .gitmodules or stash them to proceed
porque tenía cambios no organizados en.gitmodules
. Hacer logit add .gitmodules
primero resuelve eso.Eso es fácil:
.gitmodules
git add .gitmodules
git submodule deinit <path to submodule>
git rm <path to submodule>
Tendrá que eliminar los archivos del módulo en su proyecto manualmente.
fuente
git submodule deinit <submodule_name>
ygit rm <path_to_submodule>
. El último comando elimina automáticamente la entrada dentro de.gitmodules
. Git 2.17He creado un script bash para facilitar el proceso de eliminación. También verifica si hay cambios en el repositorio sin guardar y solicita confirmación. Ha sido probado en
os x
sería interesante saber si funciona igual que en las distribuciones de Linux comunes:https://gist.github.com/fabifrank/cdc7e67fd194333760b060835ac0172f
fuente
En el último git solo se necesita 4 operaciones para eliminar el submódulo git.
.gitmodules
git add .gitmodules
git rm --cached <path_to_submodule>
git commit -m "Removed submodule xxx"
fuente
En caso de que necesite hacerlo en un comando de línea con el script bash como se muestra a continuación:
$ cd /path/to/your/repo && /bin/bash $HOME/remove_submodule.sh /path/to/the/submodule
Cree un archivo de script bash en el
$HOME
directorio llamado ieremove_submodule.sh
:fuente
git rm <submodule path> && git commit
. Esto se puede deshacer usandogit revert
..gitmodules
archivo.$GIT_DIR/modules/<name>/
.Fuente:
git help submodules
fuente
Eliminar el submódulo git
Para eliminar un
git
submódulo debajo de 4 pasos son necesarios..gitmodules
archivo. La entrada puede ser como se menciona a continuacióngit add .gitmodules
git rm --cached <path_to_submodule>
.git commit -m "Removed submodule xxx"
y empuja.Se necesitan 2 pasos adicionales adicionales que se mencionan a continuación para limpiar completamente el submódulo en una copia clonada local.
.git/config
archivo. La entrada puede ser como se menciona a continuaciónrm -rf .git/modules/path_to_submodule
Estos pasos quinto y sexto no crean ningún cambio que deba comprometerse.
fuente
git submodule deinit
git-scm.com/docs/git-submodule#Documentation/…