Git es un sistema de control de versiones descentralizado, a diferencia de SVN que almacena el repositorio en un servidor centralizado, Git crea una copia del repositorio cada vez que alguien descarga el repositorio. En SVN usamos el comando checkout para descargar un repositorio, en Git usamos el comando clone

Sistemas de Control Versiones Descentralizados

18333fig0103-tn

Sistemas de Control Versiones Centralizados

18333fig0102-tn

El directorio donde se clona un repositorio es llamado nuestro directorio de trabajo o el working directory, este working directory esta relacionado a un branch del repositorio, por defecto el branch que se crea se llama master. Si lo vemos desde el punto de vista de SVN viene siendo el folder trunk. Dado que Git es un repositorio descentralizado, los branches pueden ser locales (local) o remotos (remote). El servidor del cual se clono el repositorio por primera vez se conoce como el origin (el origen).

18333fig0322-tn

A diferencia de SVN donde cada revisión tiene un número asociado, Git genera un hash basado en ciertos elementos como lo son: el id del archivo, el id del commit, el id del branch, cada id esta representado de forma hexadecimal.

git-commit

Ciclo de Trabajo en Git

A diferencia de SVN, todo el trabajo realizado se mantiene en la copia del repositorio local, no se refleja en el servidor hasta que se haga un push al remote branch. El flujo de trabajo en Git se puede definir de la siguiente manera

  1. Agregando (add) archivos al working directory: Esto le indica a Git que empiece a monitoriar (track) los cambios realizados a este archivo.
  2. Guardando (commit) los cambios en el local branch del repositorio: Esto le indica a Git que guarde el status actual de todos los cambios realizados en el working directory
  3. Subir (push) los cambios al remote branch en el origin: Esto le indica a Git que los cambios están listos para ser publicados y ser accedidos por otros colaboradores.

El área donde se realizan los pasos 1 (add) y 2 (commit) es conocido en Git como el staging area en esta área se puede definir exactamente que archivos y que cambios en el archivo se harán commit, para esto se puede utilizar el comando status.

Git Staging Area

18333fig0106-tn

Ciclo de vida de un archivo en Git

18333fig0201-tn

Flujo de Desarrollo en Git

Git ofrece la características de definir flujos de trabajos, en la mayoria de los casos, el flujo de trabajo utilizado es en base a branches, usualmente existen dos branches principales, el master y el develop; cualquier otro branch creado será con el propósito de trabajar algún bug o funcionalidad especifica, estos branches se conocen como un feature/topic branches

Flujo de Desarrollo en base a Master, Develop y Feature/Topic Branches

18333fig0319-tn

Resumen de Commandos

 Enlaces Externos: