En el libro Pro Git , dice
"Origen" no es especial
Al igual que el nombre de la rama "maestro" no tiene ningún significado especial en Git, tampoco lo tiene "origen". Si bien "master" es el nombre predeterminado para una rama inicial cuando ejecuta git init, que es la única razón por la que se usa ampliamente , "origin" es el nombre predeterminado para un control remoto cuando ejecuta git clone. Si ejecuta git clone -o booyah en su lugar, entonces tendrá booyah / master como su rama remota predeterminada.
Eso significa que podemos usar nuestro nombre de rama predeterminado como principal o rama principal o algo así. No vi ninguna opción en la man git-init
que inicializaría mi repo
con un nombre de rama predeterminado diferente.
GitHub muestra cómo establecer el nombre de la rama predeterminado en su página de configuración. Pero no estoy hablando de cómo configurarlo en ningún sitio de alojamiento Git específico . Estoy preguntando estrictamente solo en términos de Git, no en lo que respecta a ningún sitio de alojamiento de Git específico .
¿Hay una manera de hacer eso?
fuente
Respuestas:
Git más reciente, nuevo repositorio
Desde git versión 2.28.0, el
git init
comando ahora toma un parámetro--initial-branch
(o-b
para abreviar). Estos dos comandos crean un nuevo repositorio de Git con una rama llamada "tronco", que siempre tuvo más sentido para mí que "maestro" (¿maestro de qué?):Esto se puede configurar con el
init.defaultBranch
ajuste. Si quiero que todos los repositorios nuevos tengan "troncal" como rama predeterminada:Git más antiguo, nuevo repositorio
Algunos sistemas aún tienen instalaciones de Git más antiguas. Mi servidor Debian 10 (Buster, la versión estable actual de octubre de 2020) viene con Git 2.20, que no admite la
-b
opción. Una opción es crear el repositorio y luego cambiar el nombre de la rama. Esta técnica funciona para repositorios normales (no desnudos):Esto crea un nuevo repositorio con
trunk
la rama actual en lugar demaster
. La ramamaster
no existe en realidad; las ramas no se crean hasta que tienen al menos una confirmación. Hasta que se crea la rama, la rama solo existe en.git/HEAD
, lo que explica por qué lamaster
rama desaparecerá cuando cambie atrunk
.Bare Repos
Para repositorios desnudos, no se puede ejecutar
git checkout
(eso es lo que significa estar desnudo). En su lugar, puede cambiar HEAD para que apunte a una rama diferente:Reposiciones antiguas
Si ya te has comprometido, puedes ejecutar en su
git branch -m
lugar:Esto cambia el nombre de la rama de
master
atrunk
una vez creada.Esto parece un poco torpe ya que el mecanismo es diferente dependiendo de si el repositorio está vacío, pero funciona. También puede abordarlo como "crear una nueva rama y eliminar
master
".fuente
git checkout -b trunk
. ¿Eso significa que a partir de ese momento la rama predeterminada es troncal?Puede, indirectamente, configurar
git init
para usar una rama predeterminada diferente: la rama actual está definida porHEAD
, que es "solo" un archivo de texto que le dice a Git cuál es la referencia actual.Usando
init.templateDir
, puede solicitargit init
usar uno diferente:y en
~/.config/git/template/HEAD
, ponga una sola línea (+ linebreak):ref: refs/heads/main
(por defecto a la ramamain
).Todo el contenido de
templateDir
se copia en el.git
directorio al crear un repositorio; el predeterminado (aquí/usr/share/git-core/templates
) contiene algunos enlaces de muestra y otros archivos, pero puede usar su nuevo directorio de plantillas para configurar los enlaces predeterminados, por ejemplo.fuente
HEAD
archivo en la plantilla predeterminada, aunque le dirá que está "reinicializando" un repositorio cuando en realidad esté creando uno.Usaría Git 2.28 (tercer trimestre de 2020): el nombre de la rama principal en los repositorios existentes, y el nombre predeterminado utilizado para la primera rama en los repositorios recién creados, se hace configurable, de modo que eventualmente podamos dejar de usar el código 'hardcode'
master
'.Y recordatorio de agosto de 2020 de GitHub :
Pero volvamos al propio Git: (2.28, tercer trimestre de 2020) Ver el compromiso 508fd8e (29 de junio de 2020) de Đoàn Trần Công Danh (
sgn
) .Consulte la confirmación 0068f21 , la confirmación a471214 , la confirmación 0cc1b47 , la confirmación 32ba12d , la confirmación 6069ecc , la confirmación f0a96e8 , la confirmación 4d04658 (24 de junio de 2020) y la confirmación 489947c (23 de junio de 2020) por Johannes Schindelin (
dscho
) .Consulte la confirmación 8747ebb (24 de junio de 2020) de Don Goodman-Wilson (
DEGoodmanWilson
) .(Fusionada por Junio C Hamano -
gitster
- encommit 11cbda2 , 06 de julio de 2020)Y:
Nota: la confirmación 489947c , sobre el mensaje de confirmación de fusión, se ha revertido desde entonces en Git 2.29, consulte " ¿Cómo puedo personalizar el mensaje de confirmación de fusión de git? ".
El
init.defaultBranch
escenario permanece.Esto afecta a los submódulos:
Tenga en cuenta que, con Git 2.29 (Q4 2020), las pruebas
contrib/
se ajustan al cambio reciente afmt-merge-msg
.Consulte la confirmación b87528c (3 de agosto de 2020) de Emily Shaffer (
nasamuffin
) .(Combinado por Junio C Hamano -
gitster
- en el compromiso 83b8250 , 10 de agosto de 2020)También:
Con Git 2.29 (Q4 2020), actualice las pruebas para eliminar la palabra '
master
' de ellas.Consulte la confirmación f33f2d3 , la confirmación b6211b8 (26 de septiembre de 2020) y la confirmación 432f5e6 , la confirmación 5a0c32b , la confirmación 659288c (21 de septiembre de 2020) de Johannes Schindelin (
dscho
) .(Combinado por Junio C Hamano -
gitster
- en el compromiso 58138d3 , 05 de octubre de 2020)Y, todavía con Git 2.29:
Consulte la confirmación 538228e , la confirmación a15ad5d (08 de octubre de 2020) de Johannes Schindelin (
dscho
) .(Combinado por Junio C Hamano -
gitster
- en el compromiso 62564ba , 08 de octubre de 2020)fuente
Desde Git 2.28 (lanzado el 27 de julio de 2020),
init.defaultBranch
se está introduciendo una nueva opción de configuración para reemplazar el término codificadomaster
.El valor predeterminado sigue siendo
master
!El usuario puede anular el valor predeterminado de la variable de configuración con:
Lea el capítulo de git doc para obtener más detalles. Introducción a init.defaultBranch
fuente