2010-08-22 42 views
72

¿Cuál es la diferencia entre:git add. vs git commit -a

  • git add .
  • git commit -a

debería hacer ambas cosas, o es que redundante?

+2

vea también (duplicado no exacto, sin embargo): http://stackoverflow.com/questions/572549/difference-of-git-add-a-and-git-add –

Respuesta

99

git commit -a significa casi [*] lo mismo que git add -u && git commit.

No es lo mismo que git add . ya que esto agregaría archivos sin seguimiento que no se están ignorando, git add -u solo cambios de etapas (incluidas las eliminaciones) en los archivos ya rastreados.

[*] Hay una diferencia sutil si no se encuentra en el directorio raíz de su repositorio. git add -u actualiza las etapas de los archivos en el directorio actual y debajo, es equivalente a git add -u . mientras que git commit -a etapas y confirma los cambios en todos los archivos rastreados.

+2

The el comportamiento en [*] cambiará en git 2.0, por coherencia. – user1284631

+2

¿En qué dirección? es decir, se cometerá -a se volverá como agregar -u, o se agregará -u se volverá como commit-a? –

+3

@MilesRout: 'git add -u' se convertirá en' git commit -a'; Tendrás que decir explícitamente 'git add -u.' si eso es lo que quieres decir. –

13

git commit -a invoca automáticamente git add en todos los archivos que conoce. Puede usar git add para seleccionar qué archivos comprometer. Consulte los documentos para obtener más información: here

+8

* todos los archivos que conoce * no están muy claros para mí, especialmente porque supuestamente NO se agregaron –

+0

@Nikana Reklawyks Tiene la definición de "agregar" incorrecta. Agregar no significa lo mismo que en svn. Todo lo que hace es actualizar el índice. [Perdón por la respuesta lenta, no recuerdo haber recibido una notificación para ese comentario] – alternative

+1

@alternative, Aún esta respuesta puede ser mejor si agrega una aclaración para "todos los archivos que conoce" ..... – Pacerier