Git: agregar vs empujar vs cometer

¿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 'add' también

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

  1. git add agrega los files modificados a la queue para que se comprometan más tarde . Los files no están comprometidos
  2. git commit confirma los files que se han agregado y crea una nueva revisión con un logging … Si no agrega ningún file, git no confirmará nada. Puedes combinar ambas acciones con git commit -a

  3. git push lleva tus cambios al repository remoto.

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

enter image description here

git add no está en la figura porque la forma sugerida de cometer es la combinación de git commit -a , pero puedes agregar mentalmente un git add al bloque de cambios para comprender el flujo.

Por último, la razón por la cual push es un command separado se debe a la filosofía de git . git es un sistema de control de versiones distribuido, y su directory de trabajo local es su repository! Todos los cambios que usted cometa se reflejan y graban al instante. push solo se usa para actualizar el repository remoto (que puedes compartir con otros) cuando hayas terminado con lo que sea que estés trabajando. Esta es una manera orderada de trabajar y save cambios de forma local (sin gastos generales de networking) y actualizarlo solo cuando lo desee, en lugar de hacerlo en cada confirmación. Esto indirectamente da como resultado compromisos / ramificaciones más fáciles, etc. (¿por qué no ?, ¿qué te cuesta?) Lo que lleva a más puntos de guardado, sin jugar con el repository.

git add selecciona cambios

git commit records changes LOCALMENTE

git push comparte cambios

  • git add agrega files al índice Git, que es un área de preparación para los objects preparados para ser comprometidos.
  • git commit confirma los files del índice en el repository, git commit -a es un atajo para agregar primero todos los files modificados rastreados al índice.
  • git push envía todos los cambios pendientes al repository remoto al que está asignada su sucursal (por ejemplo, en GitHub).

Para entender a Git, necesitarás invertir más esfuerzo que echar un vistazo a la documentation, pero definitivamente vale la pena. Simplemente no trates de asignar los commands de Git directamente a Subversion, ya que la mayoría de ellos no tienen una contraparte directa.

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

"Resulta que Git organiza un file exactamente como está cuando ejecutas el command git add. Si confirma ahora, la versión de benchmarks.rb tal como era la última vez que ejecutó el command git add es cómo entrará en la confirmación, no la versión del file como se ve en su directory de trabajo cuando ejecuta git commit. Si modifica un file después de ejecutar git add, debe ejecutar git add nuevamente para organizar la última versión del file: "

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

Muy buen pdf sobre muchos secretos de GIT.

Agregar es lo mismo que agregar svn (como siempre se usa para marcar un file resuelto).

Confirmar también es lo mismo que svn, pero compromete el cambio en su repository local.

add dice a git que comience a rastrear un file.

commit compromete sus cambios actuales en su repository local

push te empuja repo local aguas arriba.