git-subir-cambios-con-push

Subiendo tus cambios al servidor con git push

  • 7 min

El comando git push (empujar) es la operación encargada de enviar tus commits locales al repositorio remoto y actualizar el servidor para que refleje tu nueva historia.

En el artículo anterior aprendimos a traernos el trabajo del equipo a nuestro ordenador usando fetch y pull. Ahora toca hacer exactamente el camino inverso: publicar tu código para que el resto del equipo pueda descargarlo y utilizarlo.

A diferencia de sistemas como Dropbox o Google Drive, que sincronizan archivos continuamente en segundo plano, en Git la sincronización es manual e intencionada.

Tú decides el momento exacto en el que tu trabajo está listo para subir a la nube (normalmente a origin).

Vamos cómo usar git push, y cómo resolver los problemas que te puedes encontrar al usar este comando (y como solucionarlos).

Push normal

Si estás trabajando en una rama que ya existe tanto en tu ordenador como en el servidor (por ejemplo, la rama main), la operación no tiene ningún misterio.

Simplemente abres la terminal y ejecutas:

git push
Copied!

¿Qué hace Git por debajo?

  1. Compara tu rama local con la del servidor.
  2. Identifica qué commits tienes tú que el servidor no tenga.
  3. Empaqueta esos commits, los envía por la red y le dice al servidor: “Mueve tu etiqueta main hacia adelante para apuntar a este nuevo commit”.

Cuando Git te rechaza el Push

Ahora la cosa se pone un poco más complicada, Git te ha rechazado el Push. Has intentado hacer push, pero se te llena la consola de letras rojas:

! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'github.com:...'
hint: Updates were rejected because the remote contains work that you do not have locally.
Copied!

Bla bla bla, que Push rechazado

Tranquilidad, no se ha roto nada. Esto es simplemente el mecanismo de defensa de Git entrando en acción. Git está protegiendo el código del servidor.

¿Qué ha pasado? El servidor ha detectado que su historial tiene commits nuevos que tú no tienes en tu ordenador local. Alguien (un compañero de equipo) ha hecho un push antes que tú.

Si Git aceptara tu subida ahora mismo, tu historial aplastaría el de tu compañero y sus commits se borrarían. Por eso te rechaza la operación.

La solución: Descargar e integrar

El propio mensaje de error te da la pista: (fetch first) (descarga primero).

Como vimos en el artículo anterior, tienes que traerte el código del servidor a tu máquina, integrarlo con el tuyo y luego subir el resultado final.

Descarga e integra: Ejecuta git pull. Git unirá el commit de tu compañero con el tuyo.

Vuelve a subir: Ahora que tu historia local está actualizada y contiene todos los cambios, ejecuta git push de nuevo. Esta vez entrará sin problemas.