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:
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 ;)
Gracias me he roto porque creaba mi repositorio y no podia hacer push
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.
Pero al crear un repositorio bare, ¿no se crea la carpeta .git?
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.
Gracias; muy util la explicación
Después de hacer los repositorios bare y non-bare ¿como puedo sincronizar los directorios?