Imagínate que estás desarrollando una aplicación en local, con un repositorio remoto en Git y después de hacer los cambios pertinentes al código, quieres desplegar el código en otro servidor web para que se vea directamente. Todo eso se puede hacer con Git.

Servidor de producción

Instalar Git en el servidor

sudo apt-get install git

Configurar Git en el servidor

Creamos el directorio donde se desplegará el proyecto:

mkdir -p /var/www/sitioweb

y ahora creamos un directorio por ejemplo en la carpeta home para albergar el repositorio:

mkdir -p sitioweb.git
cd sitioweb.git
git init --bare
git config core.worktree /var/www/sitioweb
git config core.bare false
git config receive.denycurrentbranch ignore

Si nos da error, creamos el fichero config a mano

sudo nano config

y dentro de él metemos:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        worktree = /var/www/sitioweb
[receive]
        denycurrentbranch = ignore

(si no nos hubiese dado error, esto ya estaría creado a partir de los primeros comandos)

Ahora creamos el fichero post-receive:

sudo nano hooks/post-receive

y dentro ponemos la rama a desplegar, en mi caso la test:

#!/bin/sh
git checkout -f test

ahora le damos permisos de ejecución:

sudo chmod +x hooks/post-receive

y en modo local

añadimos el repositorio remoto a git con el nombre web y hacemos un push de la rama test al mismo:

git remote add web ssh://usuario@servidor/home/usuario/sitioweb.git
git push web test

Nos pedirá la contraseña ssh para el usuario, y hará el deploy en el servidor.

Si nos equivocamos poniendo el repositorio git remoto, siempre podremos editarlo:

git remote set-url web ssh://usuario@servidor/home/usuario/sitioweb.git

También podremos ver el listado de los repositorios remotos y sus URL’s con el comando:

git remote -v