Agregue recursivamente toda la carpeta a un repositorio

250

Estoy tratando de agregar una rama a la rama maestra en GitHub e insertar una carpeta en esa rama.

La estructura de carpetas de la rama se ve así: SocialApp / SourceCode / DevTrunk / SocialApp y todos los archivos de código fuente están en la última carpeta.

Estoy usando los siguientes comandos de Git:

git add *
git commit -m with the message
git push

Esto está presionando solo la primera carpeta "SocialApp" en GitHub e ignorando la carpeta SourceCode que está dentro de la carpeta. ¿Cómo puedo solucionar esto?

Ashish Agarwal
fuente
44
¿Hay archivos en alguna parte? ¿No son ignorados .gitignore?
CharlesB
This is pushing only the first folder- A git no le importan las carpetas, solo los archivos. muestre la confirmación: ha confirmado un submódulo, un enlace simbólico u otra cosa que no sea una carpeta
AD7six
Estoy teniendo el mismo problema No creo que esto sea un problema, sino solo el comportamiento esperado. Sorprendentemente hay tantas soluciones.
nota: cuando sus carpetas están vacías no se rastrean. es una buena práctica poner un archivo .keep vacío allí para mantener los directorios vacíos
Amigo

Respuestas:

356

Verifique el .gitignorearchivo, si se ignora el subdirectorio.

Vuelva a intentarlo

git add --all
git commit -am "<commit message>"
git push
Beyersdorfinger
fuente
44
Tenga en cuenta que esto no incluirá los archivos mencionados en .gitignore. Por lo general, los agrego a mano o utilizo un archivo por lotes como este: for /R %%f in (*.*) do git add --force %%f(ver bitbucket.org/jeroenp/besharp.net/src/tip/Scripts/GIT/… )
Jeroen Wiert Pluimers
10
Para agregar recursivamente toda la estructura de árbol de la carpeta, el comando debe sergit add --all :/
Jason Hartley,
77
@JeroenWiertPluimers git add -f -alltrabaja para agregar archivos
.gitignored
3
@JasonHartley Tu comentario podría ser una respuesta. ¡Gracias!
ShutUpMagda
44
¿No agrega esto todos los archivos sin etapas en el repositorio de git, no solo la carpeta actual? No creo que sea lo que hace la pregunta original.
Ted
31

Esto funcionó para mí:

git add . --force
ykay
fuente
1
Las otras respuestas requieren que la lista de archivos se calcule como un argumento para el comando, este no, por lo tanto, es una mejor opción.
topkara
3
Definitivamente la mejor respuesta. Una edición sería mencionar que no se necesita --forcesi se desea que se respeten las ignoraciones.
GrafikRobot
31

CONFIGURACIÓN - repositorio local en un servidor local - el cliente está conectado al servidor local a través de LAN

git add foldername/\\*

Para llegar al servidor ...

git commit -m "comments..."
git push remote_server_name master

Principalmente, los usuarios asignarán nombre_servidor_remoto como origen ...

git remote add remote_server_name username@git_server_ip:/path/to/git_repo
Jake Bantug
fuente
99
Falló como fatal: pathspec 'foldername/\\*' did not match any files. Trabajó como git add foldername/\*.
Tpojka
¿Cuál es la diferencia entre git add foldername/\\*y git add --all?
Danijel
17

Tanto "git add *" como "git add SocialApp" llamados desde el directorio superior deberían agregar recursivamente todos los directorios.

Probablemente no tenga archivos en SocialApp / SourceCode / DevTrunk / SocialApp y esta es la razón.

Intente llamar a "touch SocialApp / SourceCode / DevTrunk / SocialApp / .temporary" (y marque .gitignore) y luego intente git add nuevamente.

nopsoft
fuente
2
No lo creo, uso git add * y tengo el mismo problema.
16

En mi caso, había una carpeta .git en el subdirectorio porque previamente había inicializado un repositorio de git allí. Cuando agregué el subdirectorio, simplemente lo agregó como un subproyecto sin agregar ninguno de los archivos contenidos.

Resolví el problema eliminando el repositorio git del subdirectorio y luego volví a agregar la carpeta.

dispersar
fuente
Esto lo resolvió para mí. También tuve que cambiar el nombre de la carpeta para que la solución
Tótem
6

Simplemente usé esto:

git add app/src/release/*

Simplemente necesita especificar la carpeta para agregar y luego usar *para agregar todo lo que está dentro de forma recursiva.

Jaime Montoya
fuente
5

Me encontré con este problema que me costó un poco de tiempo, luego recordé que git no almacenará carpetas vacías. Recuerde que si tiene un árbol de carpetas que desea almacenar, coloque un archivo en al menos la carpeta más profunda de ese árbol, algo así como un archivo llamado ".gitkeep", solo para afectar el almacenamiento por git.

usuario2989397
fuente
5

Si desea agregar un directorio y todos los archivos que se encuentran dentro de él de forma recursiva, vaya al directorio donde se encuentra el directorio que desea agregar.

$ cd directory
$ git add directoryname
usuario7205168
fuente
1
cd directorio git add *
François Richard
3

También tuve el mismo problema y no tengo el archivo .gitignore. Mi problema se resolvió de la siguiente manera. Esto tomó todos los subdirectorios y archivos.

git add <directory>/*
Suyash Jain
fuente
1

Hay momentos en que quiero incluir los códigos fuente de mi servicio web junto con su proyecto del lado del cliente. Ambos tienen un repositorio git separado. De hecho, estoy acostumbrado a agregar todos los archivos con el comando:

git add -A

Pero por alguna razón, solo agrega la carpeta. Más tarde descubrí que los archivos del servidor también tienen su .gitcarpeta, por lo que el comando no funciona.

tl; dr : asegúrese de que no haya ninguna .gitcarpeta dentro de la carpeta que desea organizar.

mr5
fuente
1
¿Cómo puede solucionar esto si no desea eliminar las carpetas .git?
lanza el
@rolls ven los submódulos git
mr5
1

Navegue a la carpeta donde tiene sus archivos
si está en una máquina con Windows, necesitará iniciar git bash desde el cual obtendrá una interfaz de línea de comando y luego usar estos comandos

git init   //this initializes a .git  repository in your working directory

git remote add origin <URL_TO_YOUR_REPO.git> // this points to correct repository where files will be uploaded

git add *   // this adds all the files to the initialialized git repository

si realiza algún cambio en los archivos antes de fusionarlo con el maestro, debe confirmar los cambios ejecutando

git commit -m "applied some changes to the branch"

Después de este pago, la rama a la rama maestra

Austine Gwa
fuente
Solo responde que mencionainit
Atul
1

Escenario / Solución 1:
Asegúrese de que su Folder/ Sub-folderno esté en el .gitignorearchivo, por casualidad.


Escenario / Solución 2:
Por defecto, git add .funciona de forma recursiva.


Escenario / Solución 3:
git add --all :/ funciona sin problemas, donde git add .no funciona (funciona).
(Comentario de @ JasonHartley)


Escenario / Solución 4:
El problema que enfrenté personalmente fue agregar Subfolders or Files, que eran comunes entre múltiples Folders.

Por ejemplo:
Folder/Subfolder-L1/Subfolder-L2/...file12.txt
Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt
Folder/Subfolder-L1/...file1.txt

Entonces Gitme estaba recomendando agregar git submodule, lo que intenté pero fue un dolor.


Finalmente, lo que funcionó para mí fue:

1. git addun archivo que está en el último extremo / nivel de a Folder.
Por ejemplo:
git add Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt

2. git add --all :/ahora.
Va muy rápidamente añadir todo el Folders, Subfoldersy files.


Nayyar
fuente
-2

Esto funciono para mi

git add -f *
Amina Sehaba
fuente