git, el control de versiones definitivo (por ahora)
Una pequeña introducción a git, el sistema de control de versiones de moda.
Ingredientes
- git-core – fast, scalable, distributed revision control system
Identidad del usuario
Para las operaciones de log, git
necesita una identificación del usuario, para ello usa estos dos comandos:
Creando un repositorio
Partiendo de un directorio (sea nuevo o no):
Añadir contenido
Lo primero es añadir el propio directorio donde has inicializado el repositorio:
Y después, del mismo modo puedes añadir cualquier fichero que crees en ese directorio o en los que contiene.
Commit
Como en la mayoría de los VCS (Version Control System) para hacer que los cambios sean permanentes y se cree una nueva versión es necesario ejecutar un “commit”. La sintaxis en git es obvia:
Y como también es habitual, pide un mensajito para informar al prójimo del propósito de los cambios realizados. Y aquí viene “la pregunta”: ¿dónde han ido esos cambios si no has indicado en ningún momento el servidor? Pues esa es una diferencia fundamental con CVS o Subversion, no tiene porqué haber un servidor que mantenga el repositorio, CVS y Subversion eran centralizados, git es distribuido.
En resumen, todo lo anterior es para crear y mantener un repositorio personal individual.
Descargar una copia del repo
Evidentemente git
tendría poco interés si no diera la posibilidad de que varias personas trabajaran sobre el mismo repositorio. Otro usuario “pepe” que tenga cuenta en la misma máquina puede obtener una copia del repo de juan con:
Trabajo en equipo
Pepe puede ahora hacer cambios sobre su copia del repo. El usuario Juan puede integrar esos cambios en su repo con:
Si Juan va a realizar esta operación frecuentemente y además quiere tener un control más fino de los cambios puede utilizar un mecanismo alternativo:
A diferencia de pull
, el comando fetch
crea una rama, que se puede mezclar con la rama principal:
o lo que es lo mismo:
Modo “centralizado”
En el apartado anterior, los cambios se piden siempre explícitamente. Hay otra alternativa: el comando push
que permite trabajar de una forma similar a la que se utiliza CVS o Subversion. En ese caso, Pepe puede enviar sus cambios a la copia de Juan con:
Y puede actualizar su copia con:
Acceso remoto
Es posible obtener una copia desde otra máquina mediante SSH:
También es posible acceder remotamente con WebDAV y rsync