2012-08-15 12 views
9

Estaba intentando realizar algunos cambios. Usé git add para agregar cualquier nuevo archivo javascript que haya creado usando el comodín *.js. Entonces cometí cambios y empujó a github:"git add * .js" no agregó los archivos en los subdirectorios

 
git add *.js 
git commit -m "stuff" 
git push github master 

Al revisar github, todos los archivos que había estado editando estaban en blanco. Estaban allí, solo vacíos.

Intenté volver a comprometerme, pero GIT dijo que todo estaba actualizado.

Luego volví y vi que después de que hice git commit -m "stuff", GIT aparece un mensaje que indica que un montón de mis archivos ".js" no se realizaron a pesar de que sólo les había añadido usando el comodín: git add *.js. Este es el mensaje que se mostró cuando intenté comprometerme.

 
# On branch master 
# Changes not staged for commit: 
# (use "git add/rm ..." to update what will be committed) 
# (use "git checkout -- ..." to discard changes in working directory) 
# 
#  modified: src/static/directory1/js/module1/file1.js 
#  modified: src/static/directory1/js/module1/file2.js 
#  modified: src/static/directory1/js/module2/file1.js 

Con el fin de solucionar este problema que tenía que bajar unos cuantos directorios al hacer mi git add:

 
git add src/static/directory1/*.js 

Esto pareció trabajado, ya que los archivos estaban allí después de que se cometan y luego empujó a gitHub:

 
git commit -m "stuff" 
git push github master 

lo que estaba pasando aquí, ¿por qué he tenido que desplazarse hacia abajo por unos cuantos directorios para obtener el boleto de comodín para trabajar?

Gracias!

Respuesta

8

Una alternativa es utilizar el comando find:

find . -name '*js' -exec git add {} \; 

Correr sin que el ejecutivo le dará la lista de archivos que está trabajando en; por lo tanto, es fácil ajustar este comando a su gusto.

+0

Esto es realmente lo único que funciona en mi máquina, ¡muchas gracias! –

30

Es necesario utilizar

git add '*.js' 

Usted tiene que usar comillas, así git recibe el comodín antes de su concha lo hace. Si no tiene citas, el intérprete de comandos solo realizará la búsqueda con comodines dentro de su directorio actual.

+0

Parece que no puedo encontrar ninguna evidencia de que Git vuelva a aparecer en los subdirectorios cuando se le da un comodín (lo probé). –

+2

http://try.github.com/levels/1/challenges/7 –

+0

Ok, parece que funciona allí pero no en mi máquina local. ¿Fue quizás una característica reciente de Git? –

12

a pesar de que sólo les había añadido usando el comodín: git add *.js

Shell expansión de comodines hace no Recurse en subdirectorios. El comodín se expande antes de que Git tenga la oportunidad de verlo.

Si usa git add '*.js', entonces Git verá el comodín y lo combinará con todos los nombres de ruta que terminan en .js. Como el * está en la posición inicial, esto terminará añadiendo recursivamente todos los archivos .js, incluidos los subdirectorios.

+1

Por favor, no robe mi respuesta. :-) Estoy tratando de obtener puntos en SO y usted agregó mi respuesta a la suya 30 minutos después de que tuvimos una discusión sobre mi respuesta. –

+0

@AaronGray: no se preocupe, también voté su respuesta, una vez que entendí lo que estaba pasando y por qué funcionó. –

Cuestiones relacionadas