Git: agregar vs push vs commit


¿Cuál es la diferencia entre git add, push y commit?

Solo un poco confundido viniendo de SVN, donde" update "'agregará' cosas, y commit hace un" push " y 'agregará' también

Hay diferentes funciones dentro de git. Esperando alguna explicación de tu experiencia.

Author: nbro, 2011-05-26

6 answers

  1. git addagrega sus archivos modificados a la cola para ser confirmados más tarde. Los archivos no están comprometidos
  2. git commit confirma los archivos que se han añadido y crea una nueva revisión con un registro... Si no agregas ningún archivo, git no confirmará nada. Puede combinar ambas acciones con git commit -a

  3. git push empuja los cambios al repositorio remoto.

Esta figura de esta hoja de trucos de git da una buena idea de la flujo de trabajo

introduzca la descripción de la imagen aquí

git add no está en la figura porque la forma sugerida de confirmar es el git commit -a combinado, pero puedes agregar mentalmente un git add al bloque de cambio para entender el flujo.

Por último, la razón por la que push es un comando separado es debido a la filosofía de git. git es un sistema de control de versiones distribuido, y su directorio de trabajo local es su repositorio! Todos los cambios que realice se reflejan y registran instantáneamente. push solo se usa para actualice el repositorio remoto (que puede compartir con otros) cuando haya terminado con lo que sea que esté trabajando. Esta es una forma ordenada de trabajar y guardar los cambios localmente (sin sobrecarga de red) y actualizarlos solo cuando lo desee, en lugar de en cada confirmación. Esto indirectamente resulta en commits/ramificaciones más fáciles, etc. (¿por qué no, verdad? ¿cuánto te cuesta?) lo que conduce a más puntos de guardado, sin interferir con el repositorio.

 134
Author: abcd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-09 15:04:48

git add selecciona cambios

git commit registra cambios LOCALMENTE

git push cambios en las acciones

 68
Author: Dustin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-03 05:16:27
  • git add agrega archivos al índice Git, que es un área de ensayo para los objetos preparados para ser comprometidos.
  • git commit confirma los archivos en el índice al repositorio, git commit -a es un atajo para agregar primero todos los archivos de seguimiento modificados al índice.
  • git push envía todos los cambios pendientes al repositorio remoto al que está asignada tu rama (p. ej. en GitHub).

Con el fin de entender Git que tendría que invertir más esfuerzo que solo echar un vistazo a la documentación, pero definitivamente vale la pena. Simplemente no intente asignar comandos Git directamente a Subversion, ya que la mayoría de ellos no tienen una contraparte directa.

 18
Author: Adam Byrtek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-26 18:27:59

Estaba confundido acerca de lo que 'add' realmente hace. Acabo de leer un párrafo muy esclarecedor del libro Git Pro que me gustaría añadir aquí, porque aclara las cosas

"Resulta que Git prepara un archivo exactamente como es cuando ejecutas el comando git add. Si confirmas ahora, la versión de benchmarks.rb tal como fue la última vez que ejecutaste el comando git add es cómo entrará en el commit, no la versión del archivo como se ve en tu directorio de trabajo cuando ejecutas git commit. Si modificar un archivo después de ejecutar git add, tienes que ejecutar git add de nuevo para preparar la última versión del archivo: "

Extracto De: Chacon, Scott. "Pro Git."Springer, 2009-08-19T00:00:00+00:00. iBooks. Este material puede estar protegido por derechos de autor.

 8
Author: Sebastian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-10 17:22:06

Muy bonito pdf sobre muchos secretos de GIT.

Add es lo mismo que add de svn (como a veces se usa para marcar archivo resuelto).

Commit también es lo mismo que svn , pero confirma el cambio en su repositorio local.

 4
Author: lord_t,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-28 23:16:33

Add le dice a git que comience a rastrear un archivo.

Commit confirma sus cambios actuales en su repositorio local

Push te empuja al repositorio local hacia arriba.

 3
Author: hvgotcodes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-26 18:27:44