
GIT es un software de control de versiones diseñado por Linus Torvalds, pero ¿Qué hace diferente a GIT de otros sistemas similares?
GIT es un sistema distribuido. Esto significa que existen repositorios en cada uno de los usuarios (desarrolladores). Personalmente, considero que eso hace que sea mucho más fácil su trabajo, debido a que se pueden hacer muchos commits locales (agrupar cambios y guardarlos) antes de enviar los cambios al servidor de desarrollo o de producción (push). Esto es genial dado que mis cambios solo afectan a mi repositorio local.
Si el cambio que se desea hacer, es lo suficientemente importante, se puede crear un nuevo branch (rama donde puedo hacer cambios mayores). Esto no pasaba con los sistemas centralizados en los cuales el repositorio estaba en un solo lugar (servidor) y por lo tanto, cuando hacías un commit tenías que cerciorarte de que los nuevos cambios no "rompieran" los de otros.
Ahora que ya sabemos qué es GIT vamos a implementarlo. Primero que todo es necesario entender cómo trabaja GIT y saber cómo es la distribución. Como se puede ver en la imagen de abajo, GIT aísla todos los repositorios de tal manera que cada uno pueda trabajar de forma independiente. Además tenemos que contar con un repositorio central, el cual tendrá todos los cambios realizados. Por supuesto, cada desarrollador podría trabajar en una rama (branch). Usualmente, el servidor de producción tiene su propia rama así como el de desarrollo.
Configuración de un repositorio central (servidor)
Vamos a configurar un repositorio central y dos repositorios locales para los
desarrolladores que trabajen en él.
Instalar GIT [email protected]:~# sudo apt-get install git Configuración de usuarios [email protected]:~# git config --global user.name "Argos" [email protected]:~# git config --global user.email [email protected] Instalación de openssh (necesario para transferir datos mediante el protocolo SSH) [email protected]:~# apt-get install openssh-server Creación del usuario "git" (propietario del repositorio) [email protected]:~# adduser git
Configuramos el servidor para autenticarnos mediante llaves públicas en vez de hacerlo con contraseñas.
Abrimos el archivo "sshd_config" [email protected]:~# nano /etc/ssh/sshd_config Agregamos las siguientes líneas: PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys Ahora, creamos las llaves públicas: Cambiamos al usuario "git" que creamos anteriormente [email protected]:~# su git Nos movemos al "home" del usuario [email protected]:/home/argos$ cd ~ Creamos la carpeta oculta "ssh" para almacenar las llaves públicas [email protected]:~$ mkdir .ssh Creamos el archivo "authorized_keys": [email protected]:~$ touch .ssh/authorized_keys Creamos una carpeta para guardar las llaves públicas que nos envíen, así tendremos un mejor control de quienes se están comunicando con nuestro servidor. [email protected]:~$ mkdir desarrolladores
Finalmente, crearemos un directorio que almacenará nuestro repositorio:
[email protected]:~$ mkdir dev [email protected]:~$ cd dev A continuación, inicializamos nuestro primer proyecto, al que llamaremos "cronos" [email protected]:~/dev$ mkdir cronos.git [email protected]:~/dev/cronos.git$ cd cronos.git [email protected]:~/dev/cronos.git$ git --bare init Hemos inicializado un repositorio vacío que se utlizará como repositorio central. Aquí encontrarán todos los commit que vayan realizando al proyecto, sin embargo este repositorio no se usa para desarrollar.
Configuración de los repositorios locales
Las siguientes instrucciones deberán seguirse en el ordenador de cada uno de los desarrolladores
El primer paso, será instalar y configurar GIT.
[email protected]:~# apt-get install git [email protected]:~# git config --global user.name "Jose" [email protected]:~# git config --global user.email [email protected]
A continuación, generamos la llave pública y la enviamos al servidor:
[email protected]:~# ssh-keygen -t rsa Nos pide una frase clave para usar la llave, esta tiene que ser mayor a 4 dígitos. Luego, enviamos la llave pública a la carpeta desarrolladores en nuestro servidor. [email protected]:~# scp /root/.ssh/id_rsa.pub [email protected]:desarrolladores/jose_rsa.pub
A continuación, en el servidor, agregaremos la llave enviada a authorized_keys:
[email protected]:~$ cat desarrolladores/jose_rsa.pub >> .ssh/authorized_keys
Nuevamente, en el ordenador del desarrollador, crearemos un directorio para el proyecto:
[email protected]:~# mkdir cronos [email protected]:~# cd cronos/ Ahora agregaremos un archivo como prueba root@jose:~/cronos# echo "hola HD :P " >> README
Inicializamos GIT
[email protected]:~/cronos# git init
Agregar todos los archivos que se desea enviar al servidor También se puede enviar archivo por archivo o por tipo de archivos.
[email protected]:~/cronos# git add .
Enviamos nuestro primer commit
[email protected]:~/cronos# git commit -m "Prueba del primer commit"
Agregamos la ruta del repositorio central
[email protected]:~/cronos# git remote add origin [email protected]:~/dev/cronos.git
Enviamos los cambios al repositorio central
[email protected]:~/cronos# git push origin master
Le pedirá que ingrese la frase con la que creo la clave pública
Para que otros desarrolladores puedan recuperar los cambios enviados, se utiliza el comando "pull" (en vez de push):
[email protected]:~/cronos# git pull origin master
Para visualizar el historial de cambios se puede utilizar una GUI como GitWeb o sino, por línea de comandos mediante git log:
[email protected]:~/cronos# git log --stat
Escrito por: Indira Burga (Ingeniera de Sistemas) en http://www.hdmagazine.org (Hackers & Developers Magazine Nº 5)

Janeth Kent
Licenciada en Bellas Artes y programadora por pasión. Cuando tengo un rato retoco fotos, edito vídeos y diseño cosas. El resto del tiempo escribo en MA-NO WEB DESIGN AND DEVELOPMENT.