no se puede agregar carpeta en git

21

Agregué una nueva carpeta (en realidad la cloné desde otro repositorio y lo olvidé), luego hice algunos cambios allí. Además, hice muchos cambios en otros lugares, cuando intenté hacer git add

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   protected/ext/SpecificFolder (modified content)
#

Entonces recuerdo que tal vez había una carpeta .git (porque anteriormente hice clon de git allí). Fui a esa carpeta y eliminé los archivos no necesarios (carpetas) y la carpeta .git también. Verifiqué el estado de git, nada extraño. Luego, confirme y finalice la compra en otra rama y, de repente, descubro que esta carpeta no se agregó a la última confirmación. En realidad, se agregó la carpeta pero se ignoraron los archivos internos. Ahora, incluso cuando estoy tratando de hacer git addpara esa carpeta no sucede nada y git statusno muestra ningún cambio :(

Que puedo hacer ?

usuario1016265
fuente
66
En caso de que alguien más termine en esta página con el problema que enfrenté: no pude agregar archivos en una subcarpeta a Git. Más tarde descubrí que esa subcarpeta tenía su propio .gitrepositorio y que los archivos se agregaban a ese repositorio en lugar del repositorio en la carpeta principal. Incluso en la GUI de Git, esa subcarpeta apareció como un archivo en lugar de como una carpeta.
Nav

Respuestas:

29

Git no rastrea directorios; pero solo los archivos dentro de ellos.

Parece que puede tener un patrón de ignorar que no está haciendo addnada. Puede ver los archivos ignorados con git status --ignored; entonces pueden ser rastreados congit add --force protected/ext/SpecificFolder

Bryan
fuente
1
No, no está presente git status --ignored, de alguna manera estoy pensando que está conectado con el submódulo
usuario1016265
1
Este comando fue un salvavidas. Sin él, nunca habría descubierto qué directorio fue ignorado.
IgorGanapolsky
wow ..... me sentí totalmente estúpido leyendo este hecho después de usar git por algún tiempo ahora ^^
XandruCea
1
Ajá, finalmente. Este fue mi problema. Copié .gitignore de padre y en submódulos. Estaba ignorando 'config /' y luego creé un directorio en el directorio fuente llamado config. No se pudo agregar cource. Problema resuelto ahora gracias :-)
Avec
7

Git no rastrea los directorios VACÍOS. Si tiene un proyecto con varias capas de subdirectorios, git de hecho rastrea los directorios con archivos en ellos. Si no fuera así, sería un repositorio plano de archivos.

Ed Mangini
fuente
Wow, esto es una cosa tan simple pero maldita sea. Leí esto y dije "oh, Dios mío, eso es exactamente"
Brian dice que reinstale a Monica el
3

Por casualidad hice exactamente lo que hizo este usuario: agregar un repositorio git existente dentro de otro.

El síntoma fue que git reconoció ese directorio como un archivo y, por lo tanto, no pudo agregar los archivos del directorio.

Para resolver esa pregunta, eliminé la .gitcarpeta en la carpeta, moví esa carpeta en otro directorio, borré el índice, eliminé el directorio donde estaba en mi repositorio y luego pude agregar el directorio correctamente.

La moraleja de esto es: no agregue un repositorio dentro de otro.

madmin
fuente
55
También se puede solucionar ejecutandogit rm --cached path_to_submodule
Victor Marchuk
2

Hay una mejor respuesta aquí: uso de .gitkeep

TL; DR, agregue un .gitkeeparchivo a su directorio vacío

Yarh
fuente
0

Intente agregar un archivo en ese directorio.

$ git add my-dir/index.html

Si ve una salida como la siguiente:

The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added

Hay una regla en uno de sus gitignores que le impide agregar ese directorio.

Gayan Weerakutti
fuente
0

Encontré efectos secundarios similares después de intentar convertir lo que solía ser un submódulo en una subcarpeta normal.

Volver a agregar la carpeta que intentaba convertir parecía funcionar, pero resulta que los archivos que contiene no se agregaron.

Intentar agregar específicamente un archivo dentro de él me dio una mejor advertencia

git add sites/all/modules/contrib/transclusion/transclusion.module 
fatal: Pathspec 'sites/all/modules/contrib/transclusion/transclusion.module' is in submodule 'sites/all/modules/contrib/transclusion'
  • por lo que estaba relacionado con la forma en que intenté eliminar manualmente el submódulo anterior, ya que no había un proceso bien documentado para hacerlo correctamente. - Acababa de eliminarlo de .gitmodules. Otras cosas eran realmente necesarias para borrar las sombras del submódulo.
dman
fuente