Este artículo explica la diferencia entre un repositorio creado con git init y uno creado con git init --bare.



Los repositorios creados con git init se denominan directorios de trabajo. En la raíz (directorio base) del repositorio se encuentra el árbol de trabajo, o copias locales de los archivos del proyecto, y un subdirectorio .git.

Los repositorios creados con git init --bare en cambio, son llamados repositorios "pelados" (hablando en criollo). Están estructurados de manera diferente a los directorios de trabajo. Primero porque no contienen copias de trabajo de los archivos del proyecto. Y segundo porque almacenan el historial de versionado del repositorio en el directorio base (en vez de en un subdirectorio .git). Por lo general (por convención) se les da la extensión .git (como ayuda visual para distinguir rápidamente que se trata de un repositorio bare).

Cuándo usar uno u otro

Un repositorio de trabajo creado con git init es justamente para trabajar. Es donde un desarrollador agrega, elimina y edita los archivos de un proyecto de manera local, para luego ejecutar git commit a fin de salvar los cambios realizados.

Es importante saber que cuando se ejecuta git clone se obtiene un repositorio de trabajo con las copias de los archivos de trabajo y el diretorio .git.

Un repositorio bare ("pelado", "vacío", "limpio"...) creado con git init --bare es para compartir. Por ejemplo, si un desarrollador está colaborando con un equipo de desarrollo, y necesita un lugar donde compartir los cambios realizados sobre un repositorio, será necesario crear un repositorio bare en un servidor centralizado donde todos los desarrolladores puedan enviar sus cambios (git push).

Como git es un sistema de control de versiones distribuido, nadie editará directamente los archivos en el repositorio centralizado. Sino que cada desarrollador clona una copia de trabajo del repositorio compartido, hace cambios localmente en las copias de trabajo de su repositorio local, y luego envía sus cambios de vuelta al repositorio compartido para que estén disponibles al resto del equipo. De esta forma, como nadie requiere editar directamente los archivos del repositorio centralizado compartido, no es necesario contar con una copia de trabajo.

Para implementar un repositorio centralizado compartido bare utilizando este esquema, es posible utilizar un servicio como GitHub, el cual es gratuito para proyectos públicos (open source). Pero si se requiere utilizar un servidor privado es necesario seguir los pasos que se describen en el artículo Cómo montar un servidor git. Cabe destacar que GitHub ofrece el servicio para implementar repositorios privados para cuentas personales (no gratuitas). Para más información, ingresar a su sitio Web.

Referencias

What is a bare git repository? - Jon Saints


Tal vez pueda interesarte


Compartí este artículo