domingo, 6 de marzo de 2011

Git - Aclarando conceptos: working directory, staging area y repositorio

Comprender la lógica de trabajo de Git requiere entender con claridad estos tres conceptos. Para ello recomiendo la lectura de esta página del fantástico libro "Pro Git" (http://progit.org/book/es/) y, en particular, del apartado "Los tres estados". De él he extraído de forma casi literal estas tres definiciones:

  • El directorio de Git es donde Git almacena los metadatos y la base de datos de objetos para el proyecto. Es la parte más importante de Git, y es lo que se copia cuando clonas un repositorio desde otro ordenador. Es el que contiene el repositorio (repository).

  • El directorio de trabajo (working directory) es una copia de una versión del proyecto. Estos archivos se sacan de la base de datos comprimida en el directorio de Git, y se colocan en disco para que los puedas usar o modificar. Se puede decir que es el que aloja físicamente los archivos del proyecto.

  • El área de preparación (staging area) es un sencillo archivo, generalmente contenido en tu directorio de Git, que almacena información acerca de lo que va a ir en tu próxima confirmación. A veces se denomina el índice (index), pero se está convirtiendo en estándar el referirse a ello como el área de preparación.

Los archivos nuevos y los modificados se "pasan" primero al área de preparación (staging area) para luego pasarlos definitivamente al repositorio. Por tanto, los ficheros temporales, ejecutables, etc. que no queremos que vayan al repositorio bastará con que no los pasemos nunca al área de preparación (mediante "git add"). Al no hacerlo, Git los ignorará totalmente.

De esta forma podemos controlar perfectamente los archivos que gestionará Git de nuestro directorio de trabajo y que formarán parte del repositorio. En general no tiene sentido, por ejemplo, que estemos guardando en el repositorio cada cambio de un ejecutable que en todo momento podemos generar con el código fuente que por supuesto sí guardamos en él.

No hay comentarios:

Publicar un comentario