Git agrega todos los subdirectorios

84

Tengo problemas para agregar una carpeta y todos sus subdirectorios a mi repositorio de git. Me di cuenta de que esta es una pregunta muy popular después de buscar en Google y probé cada sugerencia sin suerte, específicamente la sugerencia de la página de manual en git-add . Incluso lo intenté git add -Asin éxito. Por simplicidad, digamos que inicialicé mi repositorio de git como Dir1. Entonces tengo la siguiente estructura de directorios de archivos.

Dir1/file1-1.txt
Dir1/file1-2.txt
Dir1/Dir2/file2-1.txt
Dir1/Dir2/Dir3/file3-1.txt

Mis archivos reales tienen subdirectorios que abarcan 5-6 niveles de profundidad, entonces, ¿hay un comando git para agregar todos los archivos en cada subdirectorio a mi repositorio? En este momento, cuando hago la sugerencia de la página del manual git add Dir1/\*que puedo ver Dir2en mi repositorio, pero aparece como una carpeta verde y no puedo abrirla, lo que me lleva a creer que Dir2no se obtuvieron todos los archivos / carpetas. adicional. Cualquier ayuda será muy apreciada. Soy un nuevo usuario de git (menos de una semana de uso), así que intenta mantener tus instrucciones al nivel de principiante.

Josh Bradley
fuente
2
git addde cualquier directorio es automáticamente recursivo. El uso git add .en el nivel superior del repositorio debería agregar todo allí. Si no es así, .gitignoreestá en juego (local o global).
Nevik Rehnel
lo revisaste .gitignore? De alguna manera, tal vez se ignoren sus directorios.
ogzd
2
¿Cuál es la salida de git status --ignored?
Crónica
1
Solo para ayudar a otros que vean esta pregunta, si los directorios que crea no tienen ningún archivo, no los agrega. git add .Debe agregar algún archivo en los directorios para que git los rastree.
gophishing

Respuestas:

106

Hacer,

git add .

mientras está en la raíz del repositorio. Agregará todo. Si lo hace git add *, solo agregará los archivos a los que *apunta. El punto único se refiere al directorio.

Si su directorio o archivo no se agregó a git index / repo después del comando anterior, recuerde verificar si está marcado como ignorado por git en el archivo .gitignore .

Kalle Pokki
fuente
8
Intenté esto. Sigue sin funcionar. Lo hice git add. git commit git push origin master ¿Me estoy perdiendo algo?
Josh Bradley
4
Suponiendo que sus archivos están bajo Dir1, no debe hacer cd Dir1; git init; git add . ; git commit;nada más. Si tiene .gitignore ignorando archivos en algún directorio y aún desea agregarlos, debe hacerlo en git add -f .lugar de git add ..
Kalle Pokki
5
Intenté "git add". pero no estaba funcionando. Al día siguiente, volví y probé y todo "simplemente funcionó", ¡así que gracias! Debe haber sido uno de esos bichos de medianoche que desaparecen cuando vuelve la luz.
Josh Bradley
2
git add. no funciona y no agrega recursivamente los subdirectorios y su contenido.
No sabe mucho
Es posible que deba abrir una nueva ventana de comandos para que esto funcione de manera consistente.
cascabel de jaula
16

Solución simple:

git rm --cached directory
git add directory
Shashwat Gupta
fuente
13

También puede enfrentar problemas si un subdirectorio en sí es un repositorio git, es decir, tiene un directorio .git, consulte con ls -a.

Para eliminarlo, vaya al subdirectorio y rm .git -rf.

PaulB
fuente
2
En el terminal OSX 10.11.6, use: rm -rf .git
Sébastien REMY
2
Lo mismo, ¿no?
PaulB
5

También tuve problemas, pero lo hice bien escribiendo

git add -f ./JS/*

donde JS era el nombre de mi carpeta que contiene subcarpetas y archivos

Ian Wright
fuente
2
puede agregar archivos ignorados y hacer un lío en el repositorio.
changtung
1

No puedo decir con certeza si este es el caso, pero lo que parecía ser un problema para mí era tener archivos .gitignore en algunos de los subdirectorios. Nuevamente, no puedo garantizar esto, pero todo funcionó después de que se eliminaron.

Adam Ruhl
fuente
0

Lo más probable es que estén en juego archivos .gitignore . Tenga en cuenta que los archivos .gitignore pueden aparecer no solo en el nivel raíz del repositorio, sino también en cualquier subnivel. Puede intentar esto desde el nivel raíz para encontrarlos:

encontrar . -nombre ".gitignore"

y luego examine los resultados para ver cuál podría estar impidiendo que se agreguen sus subdirectorios.

También puede haber submódulos involucrados. Compruebe los directorios ofensivos en busca de archivos ".gitmodules".

samato
fuente
0

Vi este problema antes, cuando la (sub) carpeta que estaba tratando de agregar tenía su nombre que comenzaba con "_Algo_"

Quité los guiones bajos y funcionó. Verifique si su carpeta tiene caracteres que puedan estar causando problemas.

Ash Kumar
fuente