una - ¿Cuál es la forma actual de eliminar un submódulo git?
tipos de etiquetas en git (3)
Cómo eliminar de forma segura un submódulo.
(se agrega a https://stackoverflow.com/a/1260982/342794 )
-
Liste y ubique la sección del submódulo en el archivo
.gitmodules
. Diga a través de la terminalvi .gitmodules
. Ejemplo:[submodule "submodules/afnetworking"] path = submodules/afnetworking url = https://github.com/CompanyName/afnetworking.git
-
Los submódulos se pueden usar con horquillas locales. Para proyectos de larga duración, el código puede diferir del repositorio original y puede tener algunas correcciones. Es una buena idea verificar si el código del submódulo experimentó cambios en el transcurso del proyecto. Ejemplo: Mire los registros, si apunta a la rama
master
o alguna rama local. explorando los registros de git para encontrar modificaciones que se hicieron a través de la terminal. Por lo general, estos se almacenan en un directorio, mi ejemplo, en el directorio desubmodules
.User$ cd submodules/afnetworking User$ git log
-
Elimine la sección del submódulo de .gitmodules, guarde el archivo. Ejemplo: el
git status
debería mostrar solo lo siguiente como modificadomodified: .gitmodules
-
git add .gitmodules
los cambios congit add .gitmodules
. -
Liste y ubique la sección del submódulo en archivos
.git/config
. Diga a través de la terminalvi .git/config
. Ejemplo:[submodule "submodules/afnetworking"] url = https://github.com/CompanyName/afnetworking.git
-
Elimine los archivos sobmodule de git cache. ejecutar
git rm --cached submodules/afnetworking
(sin barra inclinada) lo eliminaría con éxito. Ejemplo:User$ git rm --cached submodules/afnetworking rm ''submodules/afnetworking'' <-- terminal output
-
Elimine los archivos de submódulos en
.git
directorio.git
conrm -rf .git/modules/...
Confirme con elgit status
después.User$ rm -rf .git/modules/submodules/afnetworking/ User$ git status On branch feature/replace-afnetworking-submodule-with-pod Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: .gitmodules deleted: submodules/afnetworking Untracked files: (use "git add <file>..." to include in what will be committed) submodules/afnetworking/
-
Cometer los cambios. Confirme con el
git status
después.User$ git commit -m "Remove submodule afnetworking" [feature/replace-afnetworking-submodule-with-pod 70e239222] Remove submodule afnetworking 2 files changed, 4 deletions(-) delete mode 160000 submodules/afnetworking User$ git status On branch feature/replace-afnetworking-submodule-with-pod Untracked files: (use "git add <file>..." to include in what will be committed) submodules/afnetworking/ nothing added to commit but untracked files present (use "git add" to track)
-
Elimine los archivos de submódulos no rastreados.
User$ rm -rf submodules/afnetworking
-
Eliminar las referencias del proyecto Xcode. Compila, repara problemas de compilación y tiempo de ejecución.
a partir de git versión 1.9.3 (Apple Git-50) en mac ¿cómo elimino un submódulo git?
Estoy leyendo mucha información desactualizada y muchos desarrolladores me dicen que no funcionarán.
¿Cuál es el camino actual?
¿
git deinit pathToSubModule
hará el truco?
Los pasos que pensé que funcionarían están here pero los comentarios dicen que no.
Déjame explicarte mi situación actual y lo que necesito lograr. Instalé el repositorio rápido y lo agregué como submódulo a mi proyecto. Este código ya está registrado y otros lo están usando. Lo que ahora necesito hacer es bifurcar el mismo repositorio rápido y alojarlo en un github más seguro que mi empresa (por lo que es un github completamente diferente). Después de bifurcarlo, quiero agregar esa bifurcación como gitSubmodule y dejar que reemplace el submódulo Quick actual que había instalado anteriormente.
actualización: he leído que la siguiente es la forma correcta en la última versión de git, ¿confirma?
To remove a submodule added using:
git submodule add [email protected]:repos/blah.git lib/blah
Run:
git rm lib/blah
That''s it.
For old versions of git (circa ~1.8.5) use:
git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah
Estoy usando Git versión 2.16.2 y
git rm
hace el trabajo principalmente bien:
git rm path-to-submodule
Puede verificar con
git status
y
git diff --cached
que esto desinicializa el submódulo y modifica
.gitmodules
automáticamente.
Como siempre, debes comprometer el cambio.
Sin embargo, aunque el submódulo se elimine del control de origen,
.git/modules/path-to-submodule
todavía contiene el repositorio de submódulos y
.git/config
contiene su URL, por lo que aún debe eliminarlos manualmente:
git config --remove-section submodule.path-to-submodule
rm -rf .git/modules/path-to-submodule
Mantener el repositorio y la configuración del submódulo es intencional para que pueda deshacer la eliminación con, por ejemplo,
git reset --hard
.
Tienes el
git submodule deinit
git submodule deinit <asubmodule>
git rm <asubmodule>
# Note: asubmodule (no trailing slash)
# or, if you want to leave it in your working tree
git rm --cached <asubmodule>
rm -rf .git/modules/<asubmodule>
deinit
Anule el registro de los submódulos dados, es decir, elimine todo el
submodule.$name
sección de.git/config
junto con su árbol de trabajo.Otras llamadas a la
git submodule update
,git submodule foreach
ygit submodule sync
omitirán cualquier submódulo no registrado hasta que se inicialicen nuevamente, así que use este comando si ya no desea tener un pago local del submódulo en su árbol de trabajo.Si realmente desea eliminar un submódulo del repositorio y confirmarlo, use
git rm
lugar.Si se especifica
--force
, el árbol de trabajo del submódulo se eliminará incluso si contiene modificaciones locales.