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 root@dev:~# sudo apt-get install git Configuración de usuarios root@dev:~# git config --global user.name "Argos" root@dev:~# git config --global user.email [email protected] Instalación de openssh (necesario para transferir datos mediante el protocolo SSH) root@dev:~# apt-get install openssh-server Creación del usuario "git" (propietario del repositorio) root@dev:~# adduser git
Configuramos el servidor para autenticarnos mediante llaves públicas en vez de hacerlo con contraseñas.
Abrimos el archivo "sshd_config" root@dev:~# 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 root@dev:~# su git Nos movemos al "home" del usuario git@dev:/home/argos$ cd ~ Creamos la carpeta oculta "ssh" para almacenar las llaves públicas git@dev:~$ mkdir .ssh Creamos el archivo "authorized_keys": git@dev:~$ 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. git@dev:~$ mkdir desarrolladores
Finalmente, crearemos un directorio que almacenará nuestro repositorio:
git@dev:~$ mkdir dev git@dev:~$ cd dev A continuación, inicializamos nuestro primer proyecto, al que llamaremos "cronos" git@dev:~/dev$ mkdir cronos.git git@dev:~/dev/cronos.git$ cd cronos.git git@dev:~/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.
root@jose:~# apt-get install git root@jose:~# git config --global user.name "Jose" root@jose:~# git config --global user.email [email protected]
A continuación, generamos la llave pública y la enviamos al servidor:
root@jose:~# 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. root@jose:~# 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:
git@dev:~$ cat desarrolladores/jose_rsa.pub >> .ssh/authorized_keys
Nuevamente, en el ordenador del desarrollador, crearemos un directorio para el proyecto:
root@jose:~# mkdir cronos root@jose:~# cd cronos/ Ahora agregaremos un archivo como prueba root@jose:~/cronos# echo "hola HD :P " >> README
Inicializamos GIT
root@jose:~/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.
root@jose:~/cronos# git add .
Enviamos nuestro primer commit
root@jose:~/cronos# git commit -m "Prueba del primer commit"
Agregamos la ruta del repositorio central
root@jose:~/cronos# git remote add origin [email protected]:~/dev/cronos.git
Enviamos los cambios al repositorio central
root@jose:~/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):
root@jose:~/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:
root@jose:~/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.