remove - git tag best practices
Soy nuevo en git y tengo una pregunta sobre cómo agregar archivos en git. He encontrado varias preguntas de stackoverflow sobre la diferencia entre git add .
y git add -a
, git add --all
, git add -A
, etc. Pero no he podido encontrar un lugar que explique qué git add *
does. Incluso he mirado la página de git add man , pero no ayudó. Lo he estado usando en lugar de git add .
y mi compañero de trabajo me preguntó por qué. No tenía una respuesta. Siempre acabo de usar git add *
.
Son git add .
y git add *
lo mismo? ¿Alguien agrega archivos cambiados solo del directorio actual, mientras que el otro agrega archivos del directorio y subdirectorios actuales (recursivamente)?
Hay una gran tabla enlistada en una de las otras preguntas de la pila que muestra la diferencia entre git add -A
git add .
y git add -u
, pero no tiene git add *
.
Nota: Entiendo lo que significa usar el asterisco como un comodín (agregue todos los archivos con una extensión dada). Por ejemplo, git add *.html
agregará todos los archivos que tengan una extensión .html
(pero ignore .css
, .js
, etc.).
¡Gracias por la ayuda!
Usando el punto en el shell generalmente significa "el directorio actual".
Cuando utiliza el asterisco *
en un intérprete file-globbing
se utiliza una característica llamada file-globbing
. Por ejemplo, en bash, la función glob()
está haciendo exactamente eso. La página de manual de glob ( man 7 glob
) establece:
DESCRIPCIÓN
Long ago, in UNIX V6, there was a program /etc/glob that would expand wildcard patterns. Soon afterward this became a shell built-in. These days there is also a library routine glob(3) that will perform this function for a user program.
Comodín que empareja
A string is a wildcard pattern if it contains one of the characters ''?'', ''*'' or ''[''.
Globbing
Globbing is the operation that expands a wildcard pattern into the list of pathnames matching the pattern.
Eso significa cuando pasa argumentos a cualquier programa en la línea de comandos que contenga ''?''
, ''*''
o ''[''
, primero globbing expande el patrón de comodín en una lista de archivos y luego da estos archivos como un argumento para el programa en sí.
La diferencia de significado entre ''git add .''
y ''git add *''
está claramente descrito por Denis :
git add
espera que se git add
una lista de archivos. En el ejemplo anterior, el shell se expande *
o .
respectivamente y da el resultado como un parámetro para agregar git. Ahora la diferencia es que con git add .
git se expandirá al directorio actual, mientras que git add *
activará el globbing de archivos y se expandirá a todos los archivos y directorios que no comiencen con un punto.
*
no es parte de git - es un comodín interpretado por el shell. *
expande a todos los archivos en el directorio actual, y solo luego se pasa a git, que los add
a todos. .
es el directorio actual en sí, y al git add
lo agregará y todos los archivos debajo de él.
add *
significa agregar todos los archivos en el directorio actual, excepto los archivos, cuyo nombre comienza con un punto. Esta es su funcionalidad de shell y Git solo recibe una lista de archivos.
add .
no tiene un significado especial en tu caparazón y, por lo tanto, Git agrega todo el directorio recursivamente, que es casi lo mismo, pero incluye los archivos cuyos nombres comienzan con un punto.