Aquí está la definición de un repositorio simple de gitglossary :
Un repositorio simple es normalmente un directorio con el nombre apropiado con un sufijo .git que no tiene una copia extraída localmente de ninguno de los archivos bajo control de revisión. Es decir, todos los archivos administrativos y de control de Git que normalmente estarían presentes en el subdirectorio .git oculto están directamente presentes en el directorio repository.git, y no hay otros archivos presentes y desprotegidos. Por lo general, los editores de repositorios públicos ponen a disposición repositorios desnudos.
Llegué aquí porque estaba jugando con un "repositorio local" y quería poder hacer lo que quisiera como si fuera un repositorio remoto. Solo estaba jugando, tratando de aprender sobre git. Asumiré que esta es la situación para quien quiera leer esta respuesta.
Me encantaría que un dictamen pericial o algunos contraejemplos específicos, sin embargo, parece que (después de hurgar en algún código fuente de Git que he encontrado) simplemente ir al archivo .git/config
y establecer el núcleo de atributos al descubierto al verdadero , Git le permitirá hacer lo que sea desea hacer al repositorio de forma remota. Es decir, las siguientes líneas deberían existir en.git/config
:
[core]
...
bare = true
...
(Esto es aproximadamente lo que el comando git config --bool core.bare true
hará , que probablemente se recomienda para hacer frente a situaciones más complicadas)
Mi justificación para esta afirmación es que, en el código fuente de git, parece haber dos formas diferentes de probar si un repositorio está vacío o no. Una es al verificar una variable global is_bare_repository_cfg
. Esto se establece durante alguna fase de configuración de la ejecución y refleja el valor encontrado en el .git/config
archivo. El otro es una función is_bare_repository()
. Aquí está la definición de esta función:
int is_bare_repository(void)
{
/* if core.bare is not 'false', let's see if there is a work tree */
return is_bare_repository_cfg && !get_git_work_tree();
}
No tengo el tiempo ni la experiencia para decir esto con absoluta confianza, pero por lo que pude decir si tiene el bare
conjunto de atributos que true
en .git/config
esto siempre debe devolver 1
. El resto de la función probablemente sea para la siguiente situación:
- core.bare no está definido (es decir, ni verdadero ni falso)
- No hay árbol de trabajo (es decir, el subdirectorio .git es el directorio principal)
Experimentaré con él cuando pueda más tarde, pero esto parecería indicar que configurar core.bare = true es equivalente a eliminar core.bare del archivo de configuración y configurar los directorios correctamente.
En cualquier caso, configurar core.bare = true ciertamente le permitirá avanzar, pero no estoy seguro de si la presencia de archivos de proyecto hará que algunas otras operaciones salgan mal. Es interesante y supongo que es instructivo ir al repositorio y ver qué sucedió localmente (es decir, ejecutar git status
y dar sentido a los resultados).
mv repo/.git repo.git; rm -rf repo