Saltearse al contenido

Publicar cambios

Ahora que sabemos como hacer un commit para añadir cambios a nuestro repositorio local, es hora de compartir nuestros cambios con el resto del mundo; vamos a ver como publicar los cambios de una rama en un repositorio remoto, es decir, como subir nuestro código.

Ramas locales vs Ramas remotas

Tranquilidad, no estamos ante una pelea de Ents. En este momento ya deberíamos tener claros los conceptos básicos sobre repositorios remotos y sobre ramas, ahora hay que combinar esos conceptos para saber que pasa cuando subimos cambios a un repo.

Como ya sabemos, Git es dsitribuido, lo que quiere decir que tu repositorio local y el repositorio remoto no tiene porque estar siempre en el mismo estado, ni tampoco tener las mismas ramas, de hecho, es habitual que creemos ramas en local para trabajar en nuevos desarrollos, y por lo tanto esas ramas no existirán en el repo remoto.

Dada esta situación, muchas veces tendremos que especificar el nombre de la rama a la que queremos subir los cambios. Para facilitarnos el trabajo Git ofrece una forma de asociar las ramas locales con ramas remotas, de forma que podemos subir los cambios sin tener que indicar los nombres de las ramas.

Subir cambios de ramas asociadas con el repositorio remoto git push

Cuando la rama en la que nos encontramos ya se está asociada con otra rama de un repositorio remoto, publicar nuestros cambios es muy sencillo, solo tenemos que hacer uso del comando git push.

Por ejemplo, si nos encontramos en la rama master, asociada a la rama origin/master (notación para indicar la rama master del repo remoto origin), solo tenemos que ejecutar:

git push

Lo que nos dará una salida con algo parecido a esto:

Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
...
To github.com:GonGarce/Git-Basics.git
5c46029..26c75f6 master -> master

Como podéis ver, nos indica la dirección del repositorio remoto y, a continuación, muestra el hash del último cambio existente en el repo remoto (el identificador del commit) seguido del hash del último cambio en nuestro local, es decir, te indica el estado actual y el final. Por último, muestra los nombres de las ramas de origen (nuestro repo local) y de destino (el repo remoto).

Publicar una rama no existente en el repositorio remoto git push

Bien, ya sabes como subir tus cambios desde cualquier rama relacionada con otra remota; ahora vamos a ver como subir los cambios desde una rama que no existe en el repositorio remoto.

Por ejemplo, supongamos que acabamos de crear un nuevo repositorio local y le hemos añadido el repositorio remoto origin como vimos en el capítulo Crear y clonar repositorios. Ahora mismo nos encontramos en nuestra rama master en la que hemos hecho nuestro primer commit, pero esta rama no existe en el repositorio remoto, para publicarla tenemos que indicar el repositorio remoto al que queremos subirla y el nombre de la rama.

git push origin master

Tan fácil como eso, dado que Git no tiene constancia de que nuestra rama esté asociada con ninguna rama remota tenemos que indicarle nosotros a dónde queremos subir los cambios.

Asociar la rama local con la rama remota --set-upstream, -u

Como ya habréis adivinado, para asociar una rama local usaremos un flag junto con nuestro comando push, en concreto usaremos el flag --set-upstream, o su forma mucho más amigable -u.

Así, en el ejemplo anterior, cuando subimos nuestro primer commit de master al repositorio origin:

git push origin master -u

De esta forma, la próxima vez que queramos subir nuestros cambios a master no tendremos que indicar el nombre del repo, ni la rama, y bastará con hacer git push, como vimos en el primer apartado.

Referencia rápida

Consulta la página de referencia rápida con todos estos comandos resumidos.