Git: agregar vs empujar vs confirmar

115

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

Solo un poco confuso viniendo de SVN, donde "actualizar" 'agregará' cosas, y la confirmación hace un "empujón" y también 'agregará'

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

CQM
fuente
2
Buen libro sobre git
iruediger

Respuestas:

163
  1. git addagrega sus archivos modificados a la cola para ser confirmados más tarde . Los archivos no están comprometidos

  2. git commitconfirma los archivos que se han agregado y crea una nueva revisión con un registro ... Si no agrega ningún archivo, git no confirmará nada. Puedes combinar ambas acciones congit commit -a

  3. git push envía sus cambios al repositorio remoto.

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

ingrese la descripción de la imagen aquí

git addno está en la figura porque la forma sugerida de confirmar es la combinación git commit -a, pero puede agregar mentalmente un git addal bloque de cambios para comprender el flujo.

Por último, la razón por la que pushes un comando separado es por gitla filosofía de. gites 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. pushsolo se usa para actualizar el repositorio remoto (que puede compartir con otros) cuando haya terminado con lo que sea en lo que está trabajando. Esta es una forma ordenada de trabajar y guardar cambios localmente (sin sobrecarga de red) y actualizarlo solo cuando lo desee, en lugar de en cada confirmación. Esto indirectamente da como resultado confirmaciones / 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.

a B C D
fuente
Entonces, ¿empujar el compromiso localmente y luego empujar al servidor remoto o uno tiene que confirmar primero y luego empujar para obtener trabajo en el repositorio remoto?
Andrew S
2
Primero tienes que confirmar ("git commit") que actualiza tu repositorio local (también conocido como en tu máquina local) luego tienes que empujar al servidor ("git push") que actualiza el repositorio remoto (en el servidor github por ej. )
Romain
¡Me encantaría una función de "agregar mentalmente" en Git!
Junchen Liu
1
Se recomienda no solo comprometerse con frecuencia, sino también presionar con frecuencia. Esto protege su trabajo cuando su disco duro falla.
CCC
86

git add selecciona cambios

git commit registros de cambios LOCALMENTE

git push comparte cambios

Dustin
fuente
22
  • git add agrega archivos al índice de Git, que es un área de preparación para los objetos preparados para ser confirmados.
  • git commit confirma los archivos del índice en el repositorio, git commit -a es un atajo para agregar primero todos los archivos rastreados modificados al índice.
  • git push envía todos los cambios pendientes al repositorio remoto al que está asignada su rama (por ejemplo, en GitHub).

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

Adam Byrtek
fuente
Alguien debería explicar la diferencia entre github local y remoto. Lo que tienes en local y remte. Esta es la clave que necesitas encontrar
Mehdi Amrollahi
12

Estaba confundido acerca de lo que realmente hace 'agregar'. 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 prepara un archivo exactamente como está cuando ejecuta el comando git add. Si se compromete ahora, la versión de benchmarks.rb como estaba cuando ejecutó por última vez el comando git add es cómo entrará en la confirmación, no la versión del archivo como se ve en su directorio de trabajo cuando ejecuta git commit. Si modifica un archivo después de ejecutar git add, debe ejecutar git add nuevamente 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.


fuente
7

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

commit confirma sus cambios actuales en su repositorio local

push empuja su repositorio local en sentido ascendente.

hvgotcodes
fuente
5

Muy buen pdf sobre muchos secretos de GIT.

Añadir es igual que add de svn (aunque a veces se usa para marcar el archivo como resuelto).

La confirmación también es la misma que la de svn, pero confirma el cambio en su repositorio local.

lord_t
fuente
2
Ahora tengo que buscar svn add and commit. Mi gran temor: sus documentos me remitirán a git add and commit. Y lord_t es el autor de dichos documentos.
Eric
El autor de la pregunta tenía conocimiento de SVN, así que asumí que conocía los comandos de svn.
lord_t
0

add -in git se usa para decirle a git qué archivos queremos confirmar, coloca los archivos en el área de prueba

commit- in git se usa para guardar archivos en la máquina local de modo que si hacemos algún cambio o incluso borramos los archivos, aún podamos recuperar nuestros archivos comprometidos

push: si guardamos nuestros archivos en la máquina local, es probable que se pierdan si nuestra máquina local se pierde, se daña, etc., para mantener nuestros archivos seguros o para compartir nuestros archivos, por lo general, queremos mantener nuestros archivos en un lugar remoto. repositorio como Github. Para ahorrar en repositorios remotos usamos push

ejemplo Preparar un archivo llamado index.html git add index.html

Confirmación de un archivo que está preparado git commit -m 'nombre de su confirmación'

Enviar un archivo a Github git push origin master

Herbert
fuente