Dentro del ecosistema de todo equipo de programación, o de un programador independiente, la parte más importante es el sistema de control de versiones. Actualmente la moda es utilizar Git o Mercurial. Vamos a ver como empezar a trabajar con el primero, cómo crear un repositorio y los comándos básicos.


Los comandos de este artículo funcionan en Debian 8 "Jessie". Si va a montar un repositorio Git en otro sistema operativo, tenga en cuenta que los comandos para gestionar usuarios y grupos pueden ser diferentes.

Crear un repositorio Git en el servidor

Vamos a crear un directorio en /var para albergar allí todos los repositorios de proyectos y a hacerlo accesible solo para los usuarios de la máquina que esten en el grupo git.

su - (nos autenticamos como root)
cd /var
mkdir git
addgroup git
chwon :git git
chmod g+w git
adduser paco git 

OJO: El usuario paco tiene acceso total al repositorio, es decir, puede crear, gestionar, borrar y hacer cualquier mala acción que se le ocurra con el contenido de /var/git. Si se necesita un repositorio con niveles de permisos, debemos instalar Gitolite, pero eso lo veremos en otro artículo.

Ahora hacemos login en la máquina con el usuario "paco", que ya tiene acceso al directorio de los repositorios, y creamos un repo para el Proyecto1.

cd /var/git
git --bare init proyecto1.git

¡Listo! Ya tenemos un repositorio vacío esperando por nuestro código.

Hacer el primer commit de nestro proyecto

Asumo que se tiene acceso SSH al servidor remoto donde se hospeda el repositorio Git. Si no sabe acceder a un servidor SSH con una clave RSA, este artículo le servirá de ayuda: Creación de una clave RSA con Putty en Windows.

Vamos a suponer que ya tenemos la primera versión de nuestro proyecto1, en el directorio ~/proyecto1, lista para commitear. Los pasos para enviar el código a nuestro servidor, son los siguientes:

cd ~/proyecto1
git init
git add *
git commit -m "Import inicial"
git remote add origin git+ssh://paco@servidor1/var/git/proyecto1.git
git push origin master

Ya tenemos nuestro código listo para que el resto del equipo de programadores lo clone.

git clone ssh://paco@servidor1/var/git/proyecto1.git

En caso de que trabajemos en la misma máquina que aloja los repositorios, cosa poco habitual, para añadir un repositorio local lo haremos con el comando:

git remote add origin /var/git/proyecto1.git

Comandos habituales trabajando con Git

Actualizar cambios desde el servidor

git pull

Comandos para ver el estado del repositorio

git status
git log
git log fichero
git diff commit_id commit_id

Revertir los últimos cambios desde el servidor

git checkout -- file

Deshacer el último commit no enviado con push

git reset --hard HEAD~1

Trabajando con ramas

Es importante familializarse con el uso de ramas en git. Nos sirven para tener diferentes estados del código para, por ejemplo: produccion, testing, nueva_funcionalidad1, nueva_funcionalidad2, etc.

git branch origin/prod
git branch -a
git branch --track prod origin/prod
git checkout prod
git merge master

Submódulos

Los submódulos nos permiten añadir código externo a nuestro proyecto que es mantenido por terceros, sin que se añada a nuestro repositorio.

git submodule add git@host:repo lib/repo
git submodule init
git submodule update
git submodule rm lib/repo
git submodule init
git submodule update

TIG, una interfaz de Git para cónsola

Una muy buena herramienta para visualizar los cambios y actualizaciones de nuestro repositorio es Tig. Para instalarla en Debian:

apt-get install tig

Ejecutamos el comando "tig" y presionando la tecla h accedemos a la ayuda.