Revista Informática

Git desde Cero: Manejo remoto y etiquetas.

Publicado el 11 julio 2013 por Codehero @codeheroblog

Bienvenidos a un nuevo capítulo de Git desde cero en este curso hablaremos sobre como manejar un repositorio remoto de git y como crear tags (etiquetas) para enumerar versiones finales también llamados lanzamientos. Los comandos de esta semana serán los siguientes:

  • git remote
  • git push
  • git fetch
  • git pull
  • git tag (multiples formatos)

nota: hemos creado un repositorio en Github con el curso para que te puedas descargar lo que realizamos en el curso y le eches un vistazo.


Remote (Remoto)

¿Qué es un repositorio remoto? Un repositorio remoto no es más que una copia de los archivos, carpetas, fotos, etc. qué se encuentran bajo la supervisión de git, y están respaldados en un sitio externo a nuestro computador (Internet, o una red local domestica/oficina, etc.) Esto nos permite poder colaborar en un proyecto con otros usuarios de manera distribuida; cabe destacar que un repositorio remoto se pueden tener permisos de lectura y escritura o solo lectura.

Para nuestro propósito vamos a utilizar el repositorio alojado en Github.com para cumplir nuestra tarea.

nota: debemos tomar en cuenta que al realizar una clonación se genera una carpeta con el nombre del proyecto y posiblemente unos archivos. Por lo que puede ser conveniente realizar un cambio de directorio a uno que se encuentre dentro del HOME del usuario para ahorrarnos inconvenientes.

$ git clone https://github.com/codeheroco/tutorial-git.git
Cloning into 'tutorial-git'...
remote: Counting objects: 17, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 17 (delta 1), reused 16 (delta 0)
Unpacking objects: 100% (17/17), done.
Checking connectivity... done

# Cambiamos de directorio, al directorio creado.
$ cd tutorial-git
$ git remote     
origin

Cuando utilizamos el comando git remote podemos observar que nos retornó origin, y esto no es más que un seudónimo para la dirección https://github.com/codeheroco/tutorial-git.git que viene siendo nuestra dirección remota de donde efectuamos la clonación. Para observar si esto es cierto de manera detallada utilizamos el siguiente comando:

$ git remote -v
origin  https://github.com/codeheroco/tutorial-git.git (fetch)
origin  https://github.com/codeheroco/tutorial-git.git (push)

Si tuviésemos otro repositorio del mismo proyecto pero en un servidor de pruebas donde alojamos código que necesitamos ir probando, pudiésemos agregar otra dirección remota y enviarle los cambios sin afectar a “origin”.

$ git remote add servidor-de-pruebas https://github.com/albertogg/tutorial-git.git
$ git remote -v
origin  https://github.com/codeheroco/tutorial-git.git (fetch)
origin  https://github.com/codeheroco/tutorial-git.git (push)
servidor-de-pruebas https://github.com/albertogg/tutorial-git.git (fetch)
servidor-de-pruebas https://github.com/albertogg/tutorial-git.git (push)

Podemos observar que tenemos ambas direcciones y seudónimos para poder ir a buscar (fetch) y enviar (push) código.


Push

Una vez que hemos conectado el repositorio remoto con el local y tenemos cambios consolidados en nuestro computador (local) que deseamos compartir, utilizamos el comando git push [seudónimo] [ramificación] o en nuestro caso:

$ git push origin master

Fetch

El comando git fetch es utilizado para ir a buscar los archivos al servidor. Es decir, si estamos trabajando con varias personas en un mismo proyecto es muy probable que cuando nosotros estemos introduciendo un cambio o una funcionalidad, nuestros compañeros también estén haciendo lo mismo y a su vez enviando estos cambios a un servidor remoto. Utilizando el comando fetch obtenemos los cambios consolidados que se encuentren en el servidor remoto que hayan sido realizados por nuestros compañeros y los copiamos a nuestro computador. por ejemplo:

$ git fetch origin

# Descargamos los cambios de origin
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0)
Unpacking objects: 100% (3/3), done.
From github.com:codeheroco/tutorial-git
   c250a0f..0022f43  master     -> origin/master

De esta manera actualizamos nuestra información local con la información que se encuentre remota. Pero no será reflejada en el git log hasta que la unamos con nuestro árbol de trabajo (ramificación).

nota: si utilizamos el comando fetch y no se encuentran cambios en el servidor el comando no retorna nada. Éste cambio fue introducido por nuestro amigo Jonathan (autor de los how to de codehero) en el mismo fue agregado un archivo más, únicamente para efectos de demostración.


Pull

Éste comando es muy similar al anterior aunque realiza dos funciones simultáneas. git pull realiza un fetch más un merge. Del comando merge hablaremos más adelante, de esta manera se descarga los cambios que se encuentren en el repositorio remoto y los unifica con los cambios que tengamos en nuestro equipo.

nota: utilizando este comando puede que ocurran conflictos. Explicaremos como resolverlos más adelante cuando hablemos del comando merge.

Para tener una idea de lo que realiza este comando basta con emplearlo.

$ git pull

# Cómo previamente habíamos descargado los cambios utilizando
# fetch obtuvimos la siguiente salida.

First, rewinding head to replay your work on top of it...
Fast-forwarded master to 0022f43897359daf973985a140a087c849b2bb0f.

Posterior a la ejecución hemos actualizado nuestro repositorio local haciendo una copia de los cambios en el repositorio remoto y los mismos se ven reflejados inmediatamente en el git log.


Tag

El comando git tag es mayoritariamente utilizado para etiquetar versiones importantes dentro del desarrollo. En pocas palabras para marcar un hito/lanzamiento de un producto.

En el repositorio remoto de Codehero venimos utilizando tags desde el inicio; esperando a este capítulo para enseñaros. su funcionalidad.

$ git tag

# mostramos los tags creados, sólo si existen.
Capitulo-1
Capitulo-2
Capitulo-3

Para crear un tag basta con utilizar el siguiente comando:

$ git tag "Capitulo-4"

Sí queremos ver la información de este último tag podríamos emplear el siguiente comando:

$ git show Capitulo-4

#obteniendo la siguen salida
commit 0022f43897359daf973985a140a087c849b2bb0f
Author: Jonathan Wiesel 

Una vez que hayamos creado nuevos tags y queramos compartirlos con el repositorio remoto sólo debemos emplear el comando pull con la bandera –tags de la siguiente manera:

$ git push origin master --tags
Total 0 (delta 0), reused 0 (delta 0)
To [email protected]:codeheroco/tutorial-git.git
 * [new tag]         Capitulo-4 -> Capitulo-4

Conclusión

Durante este capítulo y en conjunto con los cursos anteriores ahora hemos adquirido el conocimiento básico y fundamental para manejarnos remotamente con esta fabulosa herramienta. Si te surge algún tipo de duda no te detengas y déjanos un comentario, que gustosamente lo responderemos.

¡Hasta la próxima semana!


Volver a la Portada de Logo Paperblog