Saltar al contenido

¿Cuál es la diferencia -práctica- entre un repositorio Bare y non-Bare?

Nuestro team de redactores ha estado largas horas buscando respuestas a tu duda, te brindamos la resolución por esto deseamos resultarte de mucha apoyo.

Solución:

Otra diferencia entre un repositorio simple y no simple es que un repositorio simple no tiene un control remoto predeterminado. origen repositorio:

~/Projects$ git clone --bare test bare
Initialized empty Git repository in /home/derek/Projects/bare/
~/Projects$ cd bare
~/Projects/bare$ git branch -a
* master
~/Projects/bare$ cd ..
~/Projects$ git clone test non-bare
Initialized empty Git repository in /home/derek/Projects/non-bare/.git/
~/Projects$ cd non-bare
~/Projects/non-bare$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

Desde la página del manual para git clone --bare:

Además, los jefes de sucursal en el control remoto se copian directamente a los jefes de sucursal locales correspondientes, sin asignarlos a refs/remotes/origin/. Cuando se utiliza esta opción, no se crean ramas de seguimiento remoto ni las variables de configuración relacionadas.

Presuntamente, cuando crea un repositorio simple, Git asume que el repositorio simple servirá como repositorio de origen para varios usuarios remotos, por lo que no crea el origen remoto predeterminado. Lo que esto significa es que es básico git pull y git push las operaciones no funcionarán ya que Git asume que sin un espacio de trabajo, no tiene la intención de realizar ningún cambio en el repositorio básico:

~/Projects/bare$ git push
fatal: No destination configured to push to.
~/Projects/bare$ git pull
fatal: /usr/lib/git-core/git-pull cannot be used without a working tree.
~/Projects/bare$ 

5 años demasiado tarde, lo sé, pero nadie respondió la pregunta:

Entonces, ¿por qué debería usar el repositorio básico y por qué no? ¿Cuál es la diferencia práctica? Eso no sería beneficioso para más personas trabajando en un proyecto, supongo.

¿Cuáles son sus métodos para este tipo de trabajo? ¿Sugerencias?

Para citar directamente del libro de Loeliger/MCullough (978-1-449-31638-9, p196/7):

Un repositorio simple puede parecer de poca utilidad, pero su función es crucial: servir como punto focal autorizado para el desarrollo colaborativo. Otros desarrolladores clone y fetch del repositorio desnudo y push actualizaciones… si configura un repositorio en el que los desarrolladores push cambios, debe estar desnudo. En efecto, este es un caso especial de la mejor práctica más general de que un repositorio publicado debe estar desnudo.

La distinción entre un repositorio Git simple y no simple es artificial y engañosa, ya que un espacio de trabajo no forma parte del repositorio y un repositorio no requiere un espacio de trabajo. Estrictamente hablando, un repositorio de Git incluye aquellos objetos que describen el estado del repositorio. Estos objetos pueden existir en cualquier directorio, pero normalmente existen en el .git directorio en el directorio de nivel superior del espacio de trabajo. El espacio de trabajo es un árbol de directorios que representa una confirmación particular en el repositorio, pero puede existir en cualquier directorio o no existir en absoluto. Variable ambiental $GIT_DIR vincula un espacio de trabajo al repositorio desde el que se origina.

Comandos Git git clone y git init ambos tienen opciones --bare que crean repositorios sin un espacio de trabajo inicial. Es desafortunado que Git combine los dos conceptos separados pero relacionados de espacio de trabajo y repositorio y luego use el término confuso desnudo para separar las dos ideas.

Reseñas y puntuaciones del artículo

Ten en cuenta recomendar esta sección si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *