Parece que no puedo deshacerme del contenido no rastreado en los submódulos de Git. Corriendogit status
Rendimientos :
# En el maestro de sucursal # Cambios no organizados para commit: # (use "git add ..." para actualizar lo que se confirmará) # (use "git checkout - ..." para descartar cambios en el directorio de trabajo) # (confirmar o descartar el contenido no rastreado o modificado en submódulos) # # # modificado: paquete / snipmate (contenido no rastreado) # modificado: paquete / envolvente (contenido no rastreado) # modificado: bundle / trailing-whitespace (contenido sin seguimiento) # modificado: paquete / zencoding (contenido no rastreado) # # no se agregaron cambios al commit (use "git add" y / o "git commit -a")
Agregar el --ignore-submodules
parámetro oculta estos mensajes; pero me pregunto si hay una manera de deshacerse de esta suciedad de una manera más adecuada y esencial.
git
git-submodules
Tomer Lichtash
fuente
fuente
Respuestas:
Dado que el estado de git informa de contenido no rastreado, la forma real de tener un estado limpio sería ir a cada uno de esos submódulos y:
.gitignore
específica para cada módulo..git/info/exclude
, como informa peci1 en los comentarios .o añadir sucio a la especificación submódulo, como se menciona en ezraspectre 's respuesta (upvoted).
o agregue un archivo global
.gitignore
(a menudo~/.gitignore-global
). Como por ejemplo.DS_Store
o en mi casoCarthage/Build
según lo informado por Marián Černý en los comentarios . Ver.gitginore
página del manual :fuente
.DS_Store
archivo había sido creado automáticamente (por OS X) en uno de mis submódulos, lo que me impedía comprometer el proyecto principal. Arg! Hora de actualizar.gitignore
....git/info/exclude
y agregue las líneas de ignorar allí (funciona como un .gitignore, pero no es parte del repositorio compartido).Encontré que esta publicación de blog funciona en general. Al agregar la
ignore = dirty
opción a cada una de las entradas en el.gitmodules
archivo.fuente
ignore = untracked
también existe y muestra archivos rastreados modificados, pero no archivos no rastreados. Sería bueno si había una configuración global para esto para todos los submódulos ...También puede ir a cada directorio de submódulo y actuar como un git separado. Por ejemplo:
... / obtiene la lista de archivos modificados /
También puede actualizar su repositorio de submódulo remoto con
después de todo
fuente
git add .
sin revisar los archivos modificados. La mayoría de las veces, los cambios que se hicieron son los.DS_Store
archivos agregados ; esto probablemente debería ser captado por usted.gitignore
, como mencionó zourtney en el primer comentario a la respuesta.git submodule update --force
.Podría deberse a la
detached HEAD
rama en su submódulo. Si este es el caso, vaya a la ruta de su submódulo (por ejemplo:)./bundle/snipmate
, luego ejecutegit checkout master
.fuente
Ayer me quedé estancado en este tema, en un proyecto que tenía cerca de 12 submódulos.
git status
estaba mostrando salida.Para resolver el error de contenido sin seguimiento, tuve que quitar los archivos sin seguimiento de todos los submódulos (todos eran
*.pyc
,*.pyo
los archivos generados por el pitón) utilizando una.gitignore
.Para resolver el otro, tuve que ejecutar
git submodule update
que actualizaba cada uno de los submódulos.fuente
En mi situación, clono módulos como punto de partida para un nuevo módulo en mi entorno ZF2. Lo que esto hace es poner su propia carpeta .git en el directorio.
La solución en este caso es eliminar la carpeta .git (es probable que deba mostrar archivos ocultos para verla).
fuente
Esto probablemente ocurre cuando tiene otra .git [carpeta oculta] dentro de la carpeta en particular.
modificado: ./../ .. (contenido modificado, contenido no rastreado)
asegúrese de que su subdirectorio no contenga esta carpeta .git.
Si ese es el caso, el problema se puede resolver eliminando la carpeta .git manualmente del subdirectorio.
fuente
Prefiero usar SourceTree , por lo que la solución para mí fue abrir el repositorio de submódulos en SourceTree que me muestra la lista de todos los archivos no rastreados. Luego los seleccioné en grupo y luego usé "Eliminar".
Pude hacer esto porque sabía que todos los archivos no rastreados no eran realmente necesarios.
fuente
Esto funcionó bien para mí:
Si no funciona con el
pathname
, intente con el nombre del archivo. Avísame si esto también funcionó para ti.fuente
Si se trata de un problema temporal, puede ir a la carpeta del submódulo y ejecutarlo,
git reset HEAD --hard
pero perderá todos los cambios dentro del submódulo.fuente