2012-06-10 22 views
13

git animals tenido esta serie de comandos:¿Cuál es la diferencia entre git add * y git add., Si hay alguno?

git init 
git add * 
git commit -a -m ‘initial commit and release!’ 

¿Qué hacer en comparación con git add *git add . (que normalmente lo hacen) ¿Son los mismos?

+0

* generalmente significa "Coincidir todo" y. significa "este directorio actual", que de forma predeterminada se realiza de forma recursiva. – TylerH4

+0

@ TylerH4: Pero si la expansión de '*' incluye directorios, serán añadidos recursivamente por git en cualquier caso. –

Respuesta

17

git add * se sumarán todos los caminos que son el resultado de la cáscara expansión de * mientras que git add . le dirá git para añadir el directorio actual.

git add * no agregará rutas que comiencen con . ya que la expansión de shell de * considera que estas son rutas "ocultas".

git add * también fallará si cualquier camino ampliado actualmente está siendo ignorado por git porque git considera que es un error si se especifica explícitamente un camino ignorado sin pasar la bandera -f (fuerza) para mostrar que realmente desea añadir un camino ignorado .

Si obtiene git para expandir el glob (git add '*') agregará archivos "ocultos" y omitirá los archivos ignorados. Funcionaría igual que git add . en este caso.

+0

¿* shell * aquí significa la aplicación de línea de comandos o el sistema operativo? –

2

De forma predeterminada, al pasar un directorio a git add se agregarán recursivamente sus subdirectorios y archivos.

El comodín * se expandirá por su shell como nombres de archivos debajo del directorio actual.

Y sabes, en Unix . se refiere solo al directorio actual, por lo que estos dos comandos son equivalentes. Aunque el shell procesa * y git procesa ., hacen lo mismo.

+3

Dado que '*' es procesado por el shell, no toma en consideración '.gitignore', mientras que' .' sí lo hace. – wisbucky