:::: MENU ::::

Repositorio GIT bare vs non-bare

4.20 avg. rating (83% score) - 20 votes

A menudo cuando se comienza a trabajar con GIT surge la duda de los dos tipos de repositorio.

No encuentro muchas referencias en Internet que den información clara y simple para el programador que comienza a trabajar con GIT acerca de este punto, así que ahí va la clave fundamental para saber si lo que necesitamos crear es un repositorio bare o un repositorio non-bare.

Crear repositorio GIT bare:

user@server:/# cd /path/al/repositorio
user@server:/# mkdir mirepo.git
user@server:/# git init --bare --shared

Crear repositorio GIT non-bare:

user@server:/# cd /path/al/repositorio
user@server:/# mkdir mirepo.git
user@server:/# git init

La clave ‘sencilla’ para decidir si creamos uno u otro es pensar en si trabajaremos con una ‘working copy’ en este repositorio o si lo destinamos a repositorio central de código donde varios desarrolladores van a realizar sus git push.

Si la arquitectura que creamos es como la siguiente:

Arquitectura repositorio GIT compartido y dos locales

Entonces el respositorio central o remoto para los desarrolladores, será un repositorio bare, mientras que los repositorios locales serán repositorios non-bare.

En otras palabras, los repositorios non-bare tienen una working copy, donde el desarrollador modifica el código, y luego hace commits para guardar sus cambios. Finalmente envía dichos cambios al repositorio central con git push. No se puede hacer un git push a un repositorio non-bare.

Por el contrario, los repositorios bare no tienen una working copy y están destinados sólo a almacenar el repositorio.

Con este pequeño truco, no tendréis dudas nunca más ;)




6 Comments

    • Responder Ivan Ferrer |

      empiezo en esto pero por lo visto puede hacerse push a una nueva rama si el repo es non-bare. Y luego en origin hacer merge de la rama con el master.
      Gracias por el post.

    • Responder Daniel Navarro Murillo |

      Sí, la carpeta .git se crea siempre. Lo que no se crea cuando es un repositorio bare es la copia de trabajo. Es decir, no tienes los archivos del proyecto para modificarlos, ni puedes hacer commits en esa copia del repositorio, etc. Habitualmente es el repositorio donde realizan los push o pull el equipo de programadores.

  • Responder Jose Balbuena |

    Después de hacer los repositorios bare y non-bare ¿como puedo sincronizar los directorios?

Hey! Qué opinas sobre el artículo?