tipos tag submodulos submodule etiquetas ejemplos crear git add git-submodules

tag - No se puede rastrear archivos dentro de los submódulos de Git



submodulos git (3)

Debe considerar publicar esta pregunta en la lista de correo de Git ( [email protected] ). Es probable que obtenga una respuesta más rápida y completa.

Si decides publicar allí, asegúrate de incluir:

  • Una descripción de lo que estás tratando de lograr.
  • Una descripción del problema que ha encontrado.
  • Un registro de sesión completo que muestra:
    • CD al directorio de nivel superior en tu repositorio.
    • ls -al
    • cat .git/config
    • find . -name ".git*"
    • git status
    • git add editors
    • git add shells
    • git status

Problema: agregar archivos en ./shells/smallApps/* a Git en ./.git/ cuando no tengo los archivos en ./.git/info/exclude ni en ningún .gitignore .

Esta pregunta se basa en esta banda de rodadura donde el problema no se resuelve por completo.

Corro

$git status ~/bin # On branch master nothing to commit (working directory clean) $git ls-files ~/bin Screen/dev/vim-open.screen --- cut ---

Observo que no tengo los archivos "shells / smallApps / *" en mi Git

$ls shells/smallApps/ ~/bin devTodo extract ~/bin

Quiero agregarlos a mi Git corriendo

$git add shells/smallApps/devTodo shells/smallApps/extract fatal: Path ''shells/smallApps/devTodo'' is in submodule ''shells/smallApps'' $git add .

Observo que los archivos no se agregan a mi Git por alguna razón tal que

$git status ~/bin # On branch master nothing to commit (working directory clean)

No tengo los archivos en .git / info / exclude ni en .gitignore -files.

¿Qué significa la última advertencia?


Veo que tienes git add diciendo algo acerca de los submódulos. ¿Tienes anidados repositorios de Git? Hacer esto:

$ find . -name .git

¿Cuántos directorios .git están listados? Si hay más de uno, entonces tienes varios repositorios anidados y eso podría ser la causa de algo de esta confusión.


ACTUALIZAR

Hay dos razones generales por las que Git ignorará un archivo: gitignore y submodules .

Para ser más específicos, las siguientes condiciones harán que Git ignore un archivo cuando se invoca '' git add '':

  1. El archivo coincide con un patrón $GIT_DIR/exclude .
  2. El archivo coincide con un patrón en un archivo .gitignore dentro del repositorio.
  3. El archivo coincide con un patrón en un archivo .gitignore específico del .gitignore (especificado por '' git config --global core.excludesfile '').
  4. El archivo es parte de un submódulo.

Forzando '' git add '' en un archivo ignorado:

Puede verificar si un archivo en particular se ignora al invocar '' git add full/path/to/file ''.

La página del manual indica que "Si un archivo ignorado se especifica explícitamente en la línea de comandos, el comando fallará con una lista de archivos ignorados".

Si se ignora el archivo, puede forzar que se agregue con '' git add --force full/path/to/file ''.

Instrucciones para eliminar una referencia de submódulo:

Como se señaló en una respuesta anterior, shells/smallApps es un submodules en su repositorio.

Si el archivo es parte de un submódulo, la situación es más compleja. No puede modificar el contenido del submódulo desde el proyecto principal.

Si desea eliminar la referencia del submódulo y realizar un seguimiento directo de los archivos en su repositorio principal, hay varios pasos que deben realizarse. No puede simplemente eliminar el directorio ".git" del submódulo. Hay tres enlaces entre su repositorio principal y el submódulo:

  1. El archivo .gitmodules en su repositorio principal.
  2. Una entrada en el .git/config de su repositorio principal.
  3. Cualquier compromiso relacionado con el submódulo en su historial de repositorio principal.

Por esta pregunta de SO relacionada , debe realizar los siguientes pasos para eliminar completamente el sub-módulo:

NOTA: Si otra rama depende de este submódulo, ¡al eliminarlo puede dañar su repositorio! Esta es una operación peligrosa ... use con precaución.

  1. Elimine la línea relevante del archivo .gitmodules .
  2. Eliminar la sección correspondiente de .git/config .
  3. Ejecute git rm --cached path_to_submodule (sin barra diagonal final).
  4. Cometer

Los archivos que formaban parte del submódulo ahora están sin seguimiento y usted puede decidir mantenerlos o eliminarlos según lo desee (con la advertencia mencionada a continuación).

Si no necesita estos archivos, simplemente puede eliminarlos.

Advertencia: si desea conservar estos archivos (que parece que desea), debe eliminar manualmente el directorio .git de la carpeta de submódulos:

  1. cd path_to_submodule
  2. rm .git
  3. cd ..
  4. git add path_to_submodule
  5. git status
  6. git commit

ACTUALIZAR:

Solicitud de más información:

Para ayudar a depurar este problema, publique el resultado de la siguiente sesión completa de comandos:

cd to the top-level directory in your repo ls -al cat .git/config find . -name ".git*" git status git add editors git add shells git status

Basado en la descripción de lo que has hecho hasta ahora, espero ver:

  • Ningún archivo .gitmodules ninguna parte
  • Solo un directorio .git (que se encuentra en la raíz de su repositorio)
  • No hay un directorio .git en los editors/vim/vimdoclet
  • Ningún directorio .git en shells/smallApps