Git. configurar servidor y clientes

GIT Logo

Un poco de historia

Git es el sistema de control de versiones de moda.

Fue creado allá por el año 2005, y a día de hoy está siendo más usado que otros sistemas como Subversion, que hasta hace no mucho era el más usado.

Y no es para menos. Es fácil de implantar y más potente que Subversion, ya que basa el sistema de branches y tags en metadatos, en vez de obligar a los programadores a copiar todo un proyecto cada vez que se quiere crear una rama.

Esto ayuda a que se produzcan muchos menos conflictos a la hora de hacer un merge entre dos ramas, y que no tengamos que cambiar de espacio de trabajo para cambiar de rama.

Otra gran diferencia es que nuestro repositorio no se encuentra alojado en un servidor, sino que está directamente en nuestra máquina, y el servidor se usa únicamente como punto de encuentro entre los programadores implicados en el proyecto, para poder hacerse eco de las modificaciones hechas por otros.

De esta forma, siempre que se hace un commit lo hacemos sobre nuestra copia local, y para mandar todo nuestro historial de commits al servidor se utiliza la instrucción push.

Otra de las razones del éxito de Git fue la aparición del portal de software libre Github.

Este portal permite publicar el código de una aplicación utilizando un servidor Git por detrás, de forma que otros usuarios pueden tener acceso a los commits y ramas que hemos realizado en nuestro proyecto.

Configurar el servidor

A diferencia de otros sistemas de versiones, Git es capaz de funcionar sobre SSH, por lo que la configuración del servidor es muy simple.

Lo primero que hay que hacer es instalar la herramienta git. Asumiendo que nuestro servidor es Linux, la instalación desde repositorio usando el gestor de paquetes correspondiente es inmediata.

Por ejemplo, en un sistema Ubuntu sería:

sudo apt-get install git

Una vez instalado, nos posicionamos en la carpeta donde queramos guardar nuestro repositorio, por ejemplo /path/to/git-repo, y ejecutamos este comando:

git init --bare

Esto inicializa el repositorio en la carpeta actual sin un directorio de trabajo, ya que se supone que los directorios de trabajo estarán en las máquinas cliente, y aquí solo se irán acumulando los cambios.

Cabe destacar que a diferencia de Subversion, que guarda todos los proyectos en un mismo repositorio, con Git se suele generar un repositorio nuevo para cada proyecto, lo cual no tiene más implicaciones que ejecutar el comando anterior en varios directorios.

A parte de esto necesitaremos que exista algún usuario en el sistema con permisos de lectura y escritura sobre la carpeta donde se ha creado el repositorio, ya que los usuarios remotos enviarán los cambios por SSH.

Para una información más detallada, revisar la web oficial de Git.

Configurar clientes

Por lo general la mejor opción para trabajar con Git es usar la herramienta en linea de comandos. Existen versiones para todos los sistemas operativos, incluido Windows. Se puede descargar aquí.

En Linux es la misma herramienta que se usa en el servidor.

Podéis encontrar una buena referencia de los comandos de git en gitref.org.

Básicamente deberemos posicionarnos en el directorio donde hemos creado el proyecto y ejecutar:

git init

Con esto inicializaremos el repositorio para el proyecto actual. Después de eso hay que agregar todos los archivos del proyecto a dicho repositorio ejecutando:

git add .

Y ejecutar el primer commit:

git commit -m "First commit"

Ahora nuestro repositorio local ya está inicializado y funcionando. Siempre que hagamos algún cambio ejecutaremos un commit para mantener un historial de cambios en la aplicación.

Pero no hemos terminado, ahora tenemos que enviar nuestros cambios al servidor, para que otros programadores puedan tener acceso a ellos.

Para enviar el repositorio al servidor se utiliza el comando push. Asumiendo que en nuestro servidor el repositorio está en /path/to/git-repo y que existe allí un usuario llamado git, el comando a ejecutar sería el siguiente:

git push ssh://git@server/path/to/git-repo master

Después de ejecutarlo nos pedirá la contraseña del usuario git.

Cuando al final del comando ponemos master, estamos indicando qué rama queremos llevar al servidor. La rama master se crea por defecto al hacer el primer commit.

A partir de ahora siempre que hagamos un pull al servidor estaremos enviando allí el último grupo de commits hechos sobre la rama indicada.

Si ahora otro compañero quiere obtener el repositorio del servidor para generar su propia copia de trabajo deberá ejecutar el comando:

git clone ssh://git@server/path/to/git-repo

Esto le devolverá todas las ramas y todos los commits que existen en ese momento.

Pero podría ser que ya esté trabajando sobre dicho proyecto y sólo quiera fusionar los últimos cambios con su copia. En ese caso se realiza la acción pull.

git pull ssh://git@server/path/to/git-repo

Estas son las acciones básicas de git en linea de comandos. No obstante hay gente que prefiere trabajar con un GUI, porque está más acostumbrado.

Casi todos los IDEs actuales tienen algún tipo de integración con repositorios Git, igual que con otros, mediante plugins o directamente de forma nativa.

Eclipse, por ejemplo, dispone de un plugin bastante bueno que permite trabajar con Git sobre cualquiera de nuestros proyectos, y gracias a él podemos realizar todas las acciones antes mencionadas mediante menús contextuales y ventanas de ayuda.

La web de dicho plugin es esta.

En la guía de usuario se puede ver cómo realizar el proceso que se ha explicado aquí usando el plugin, con capturas de pantalla incluidas.

Y hasta aquí esta breve introducción. Si habéis trabajado con otros repositorios, probad Git porque no decepciona.

1 Comments

  1. Hola! excelente articulo…

    Igual, una petición: se podría tocar el tema para hacer deploy desde git al server ? se puede ?

Anímate a compartir con nosotros tus inquietudes y experiencias.

A %d blogueros les gusta esto: