Ayer me entró la curiosidad sobre cómo utilizar el gestor de control de versiones git. Ya tengo montado mi repositorio en una máquina remota y configurado para realizar los cambios desde mi equipo para luego subirlos a producción. Os comento cómo hacer esto.
Escenario:
- Servidor de producción [SERVIDOR]. En este servidor tenemos corriendo una aplicación en django (en la ruta /opt/proyecto/aplicacionA). Aquí también motaremos nuestro repositorio remoto. Tendremos que tener git instalado (desde paquetería o compilando).
- Equipo local [LOCAL]. Aquí es desde donde haremos los desarrollos, para posteriormente, subirlos a producción. Tendremos que tener git instalado (desde paquetería o compilando).
Lo que sigue a continuación serán los pasos al estilo receta, para más info de git, acudir al sitio http://git-scm.com/book/es/
1) Crear repositorio remoto
- Accedemos por ssh a SERVIDOR
- Creamos la ubicación del repositorio y lo iniciamos:
[SERVIDOR] mkdir /opt/repo/aplicacionA.git
[SERVIDOR] cd /opt/repo/aplicacionA.git
[SERVIDOR] git init --bare
¡IMPORTANTE! El usuario que utilicemos para conectarnos por ssh al SERVIDOR debe tener permisos sobre /opt/repo/aplicacionA.git
- Configuramos nuestro proyecto de producción para indicar la ubicación del repositorio y hacer la carga de código:
[SERVIDOR] cd /opt/proyecto/aplcacionA
[SERIVDOR] git init
[SERVIDOR] git remote add origin /opt/repo/aplicacionA.git
[SERVIDOR] git add .
[SERVIDOR] git commit -m 'Primera entrada de commit'
[SERVIDOR] git push origin master
Hasta aquí ya tenemos en nuestro repositorio remoto el código del proyecto de producción.
2) Descargar el repositorio
- Ahora nos descargaremos el proyecto en LOCAL para poder trabajar con él:
[LOCAL] mkdir /opt/desarrollo
[LOCAL] cd /opt/desarrollo
[LOCAL] git clone ssh://usuario@SERVIDOR//opt/repo/aplicacionA.git
Ya tenemos en local una copia del código de producción.
3) Realizar cambios
- Si queremos realizar un cambio en local y luego aplicarlo a producción (ejemplo, añadir un nuevo fichero):
[LOCAL] cd /opt/desarrollo/aplicacionA
[LOCAL] touch README
[LOCAL] git add README #Indicamos que tenga en cuenta este fichero
[LOCAL] git commit -m "Añadimos fichero README" #Hacemos commit con un comentario
[LOCAL] git push origin master #Subimos el fichero al repositorio
- Ahora aplicaremos este cambio en producción:
[SERVIDOR] cd /opt/proyecto/aplcacionA
[SERVIDOR] git pull origin master #Obtenemos la última versión del respositorio
- Si nos equivocamos mientras hacemos un cambio:
[LOCAL] cd /opt/desarrollo/aplicacionA
[LOCAL] git add README
[LOCAL] echo "Prueba" > README #Hacemos un cambio en README, pero nos arrepentimos y queremos volver al estado anterior
[LOCAL] git reset README #Le decimos que no tenga en cuenta este fichero para los cambios en el respositorio
[LOCAL] git checkout -- README #Volvemos a la versión del repositorio del último commit.
- Para recuperar archivos antiguos, remito a esta entrada:
http://www.alvaroremesal.net/blog-alvaroremesal/recuperar-archivos-antigos-con-git
4) Crear ramas
git branch nueva_rama
git branch -> nos muestra las distintas ramas existentes
git checkout nueva_rama -> nos cambiamos a esta nueva rama
Espero que sea útil.