usar una tipos tener tag qué proyecto podemos para nuestros mayor herramienta hacer existen etiquetas etiqueta eliminar crear control comando git github git-submodules

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 )

  1. Liste y ubique la sección del submódulo en el archivo .gitmodules . Diga a través de la terminal vi .gitmodules . Ejemplo:

    [submodule "submodules/afnetworking"] path = submodules/afnetworking url = https://github.com/CompanyName/afnetworking.git

  2. 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 de submodules .

    User$ cd submodules/afnetworking User$ git log

  3. Elimine la sección del submódulo de .gitmodules, guarde el archivo. Ejemplo: el git status debería mostrar solo lo siguiente como modificado

    modified: .gitmodules

  4. git add .gitmodules los cambios con git add .gitmodules .

  5. Liste y ubique la sección del submódulo en archivos .git/config . Diga a través de la terminal vi .git/config . Ejemplo:

    [submodule "submodules/afnetworking"] url = https://github.com/CompanyName/afnetworking.git

  6. 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

  7. Elimine los archivos de submódulos en .git directorio .git con rm -rf .git/modules/... Confirme con el git 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/

  8. 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)

  9. Elimine los archivos de submódulos no rastreados.

    User$ rm -rf submodules/afnetworking

  10. 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 y git 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.