Tengo un repositorio vacío que se usa como almacén central para mi proyecto. Todos los desarrolladores hacen git clone <repo>
para compartir con él. Cuando hacen el clon, obtienen un checkout de la rama maestra (a menos que lo hagan git clone -n
) porque repo.git/HEAD
contiene , lo que lo convierte en la rama Active Branch.Git: ¿forma correcta de cambiar Active Branch en un repositorio simple?
La pregunta es, ¿cómo puedo cambiar Active Branch correctamente? Podría simplemente piratear el archivo repo.git/HEAD
directamente, pero eso parece desagradable y, bueno, hacky.
Intenté hacer git checkout <otherbranch>
en el directorio repo .git
, pero eso falló porque no estaba en un árbol de trabajo.
me trataron git update-ref HEAD refs/heads/otherbranch
pero que acaba de actualizar refs/heads/master a ser el mismo que refs/heads/otherbranch (bueno, hice que uno en un repositorio ficticia, no es mi producción de uno!)
me trataron git update-ref --no-deref HEAD refs/heads/otherbranch
y eso casi funcionó. Se actualizó el archivo HEAD
, pero lo configuró en SHA1 de la confirmación señalada por refs/heads/otherbranch
.
Estoy probando con la versión 1.7.0.2.msysgit.0
de git.
supongo que no hay manera de hacer esto a través git push
, como permitir que todos y cada uno a su rama por defecto parece un poco inseguro (!), Pero seguro que hay una mejor manera de hacerlo en el directorio de recompra .git
de piratear directamente el archivo HEAD
.
IMO simplemente está tratando fundamentalmente de hacer lo incorrecto aquí. Si desea que la rama predeterminada sea algo distinto a la maestra, entonces esa rama debe ser la maestra. Alternativamente, use dos repositorios diferentes. –
¿De qué manera esto intenta fundamentalmente hacer algo incorrecto aquí? Un repositorio simple admite múltiples ramas. Utilizo un repositorio simple como respaldo de mi repositorio local, y como tal reflejo las ramas. Tengo un maestro en ambos y una rama de desarrollo en ambos. Si quiero ver el registro de la rama de desarrollo en el repositorio desnudo, tengo que hackear los archivos, parece que git es fundamentalmente incorrecto aquí con respecto al soporte de repositorio simple. – Cthutu
@NicholasKnight En mi humilde opinión, estás fundamentalmente equivocado aquí. No hay nada especial acerca de "maestro" como nombre de una rama, es solo un valor predeterminado. En los respositorios que mantienen, no tenemos una rama principal, ya que "maestro" no es significativo para la empresa. Cada vez que hacemos un lanzamiento, creamos una nueva rama de mantenimiento con el nuevo número de versión y la asignamos como la rama activa. – Spacemoose