Un sistema de control de versiones le permite tener registro de los cambios realizados sobre un conjunto de archivos, restaurar una versión previa y continuar su trabajo desde allí. El conjunto de achivos y su historia se llama repositorio.
Git es un sistema de control de versiones distribuido, cada copia (clon) del repositorio es un repositorio en sí, es decir, al hacer una copia del respositorio se copia también toda su historia.
Para realizar un ejemplo creamos una carpeta que llamaré documento y allí copiamos el archivo en LaTEX que descargamos de aquí.
Para crear el repositorio con el contenido de la carpeta vamos a la lĺinea de comandos y hacemos:
$ git init /ruta/a/la/carpeta
Debe observar un mensaje de que ha sido creado el repositorio:
Initialized empty Git repository in /ruta/a/la/carpeta/.git/
Si entramos a la carpeta y listamos los archivos ocultos vemos que se ha creado una carpeta .git, esta carpeta contiene todos los registros de la ubicación del repositorio (local o en la red) y los registros de cambios en los archivos.
Ahora, ubicados en la carpeta donde se encuentra nuestro repositorio, creemos una copia de éste en otra carpeta con el comando:
$ git clone documento clon
Nos debe salir un mensaje indicándonos que hemos hecho un clon de un repositorio vacío:
warning: You appear to have cloned an empty repository.
Si listamos los archivos veremos que además de la carpeta documento tenemos una nueva llamada clon, si listamos todos los archivos allí, veremos que también existe una carpeta oculta .git pero no existe el archivo .tex, esto es porque no lo agregamos al repositorio.
Esto lo podemos hacer con el siguiente comando dentro de la carpeta documento que es nuestro repositorio original y contiene dicho archivo:
$ git add articulo.tex
Creemos además una carpeta que llamaremos img, donde vamos a guardar las imágenes del artículo, descarguemos cualquiera de la red y ubiquémosla allí. Observemos ahora el estado del nuestro repositorio con el comando:
$ git status
- ¿Qué pasa si en este punto realizamos un clone?
En los sistemas de control de versiones es importante, necesario y obligatorio dejar siempre un mensaje cada que se reporta un cambio en los archivos, al proceso de reporte de cambios lo llamamos commit y al mensaje mensaje de commit.
$ git commit
Este comando abrirá un editor de texto por defecto y reportará los cambios agregados, es decir, si no agregamos el archivo de imagen éste no será reservado en nuestro repositorio.
- ¿Será que ahora sí el clone es correcto?
- Agreguemos la imagen y hagamos el nuevo commit.
Observemos la salida del comando:
$ git branch -a
Esto nos reporta las ramas o branches disponibles en el repositorio, una rama es un espacio de trabajo dentro del repositorio, por defecto se comienza a trabajar en la rama principal que se llama master. Cuando se van a realizar cambios o se va a probar algo nuevo en los archivos de trabajo, por lo general se hace en una rama diferente a la principal y luego que todo esté probado se incluye en ésta última.
Existen dos conceptos adicionales para cerrar el proceso básico de trabajo con git: push y pull, que equivaldrían a subir y bajar un archivo en el argot de Internet.
Luego de realizar todos los cambios realizamos el commit, y para enviar los archivos a la rama principal del repositorio hacemos:
Para actualizar una copia del repositorio podemos hacer:
Luego de realizar todos los cambios realizamos el commit, y para enviar los archivos a la rama principal del repositorio hacemos:
$ git push master
Para actualizar una copia del repositorio podemos hacer:
$ git pull
Hagamos ahora el ejercicio completo:
- Iniciemos un repositorio nuevo.
- Creemos un archivo allí.
- Lo agregamos al repositorio.
- Hacemos el commit.
- Hacemos un push.
- Creamos un clon del repositorio.
- Al repositorio original le agregamos algo nuevo, otro archivo o editamos el archivo anterior.
- Hacemos un nuevo commit y un nuevo push.
- Vamos al repositorio clon y hacemos un pull.
Supongamos ahora que los cambios realizados no son satisfactorios y queremos volver a una versión anterior, esto es, nos queremos devolver a un commit previo. Primero debemos conocer cual es el identificador del commit:
$ git log
Veremos un mensaje del tipo:
commit 40997ab90bd69f31d461a9ab0052664f17fb5ef1 Author: usuario <usuario@localhost> Date: Fri May 16 01:09:31 2014 -0500 Agregada la introduccion... commit 349dd0e3a1f24b39ed43d03f70273b319cf00fdb Author: muzgash <usuario@localhost> Date: Fri May 16 01:09:31 2014 -0500 Agregamos el archivo principal del artículo
El número enorme luego de la palabra commit es el identificador de dicho reporte. Para volver a la primera versión por ejemplo basta con pegar los primeros caracteres del identificador en el siguiente comando:
$ git reset --hard 349dd
- Revisemos el archivo articulo.tex y el log de git.
No hay comentarios:
Publicar un comentario