Control de versiones: GIT

De WikiEducator
< Curso Python DGA 2011
Revisión a fecha de 21:04 16 ago 2011; Lmorillas (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar


Durante el desarrollo del curso vamos a hacer uso de un sistema de control de versiones, concretamente GIT. Buena parte de ejemplos y ejercicios estarán alojados en un repositorio de [1]

Git es un sistema de control de versiones distribuido. A diferencia de sistemas de repositorios centralizados como SVN, cada usuario tiene una copia completa del repositorio, con todo el histórico. Esto permite hacer una gestión de ramas coherente y muy rápida.


Documentación

La página oficial de documentación sobre git: http://git-scm.com/documentation, dentro de la que se puede encontrar el tutorial oficial para empezar (http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html)

Referencia

Documentación en castellano

Uso del repositorio del curso y primeros pasos con git

Instalación

Lo primero, por supuesto, tener instalado git (http://git-scm.com/download).

Para Debian/Ubuntu:

$ apt-get install git

Clonando el repositorio

Nos haremos con el repositorio del curso ejecutando:

$ git clone git://github.com/neodoo/curso_python_dga_11.git

Haciendo una rama propia

Cada alumno hará una rama propia del repositorio a fin de ir realizando las soluciones a los ejercicios propuestos:

$ git checkout -b alumnoXXXX # se crea la rama y se trabaja sobre ella

Haciendo cambios

<Añadimos o modificamos ficheros>
$ git add -A Se marcan todos los ficheros nuevos para que se pueda hacer commit de ellos
$ git commit -a #Se añaden todos los cambios, y se hace commit
$ git add <fichero(s)> #Se añaden ficheros y cambios, pero no se hace commit todavía
$ git add -i #Para añadir interactivamente
$ git commit #hace commit de los cambios que se hayan añadido previamente con add

Más sobre ramas y merges

$ git checkout master #para volver a la rama principal
$ git checkout alumnoXXXX #se vuelve a la rama del alumno
$ git checkout -b rama_temporal_prueba # creación de otra rama, por ejemplo para realizar algún tipo de prueba
<cambios en rama_temporal_prueba>
$ git checkout alumnoXXXX
<cambios en alumnoXXXX>
$ git merge rama_temporal_prueba # estamos satisfechos con la prueba, mergeamos los cambios a alumnoXXXX

Comparando cambios y obteniendo información de revisiones

$ gitk # Herramienta gráfica para ver el estado y revisiones del repositorio
$ git log # Muestra un log de cambios en la rama actual
$ git show HEAD # muestra información sobre el último commit y el parche del mismo
$ git diff #muestra los cambios que aún no se han añadido al índice con "git add"
$ git diff --cached #muestra los cambios añadidos al índice pero que aun no se han "commiteado"
$ git diff master...alumnoXXX #muestra cambios entre dos ramas

Guardando temporalmente cambios locales y aplicandolos despues

$ git stash # guarda en una pila los cambios que se tienen localmente sin añadir al índice y limpia el directorio de trabajo
$ git stash pop # aplica el último juego de cambios que se hayan almacenado en el stash