fatal: no es un nombre de objeto válido: 'maestro'

182

Tengo un servidor privado que ejecuta git 1.7 cuando

git init 

una carpeta no crea una rama maestra. Porque cuando lo hago:

git branch 

No enumera nada. Cuando lo hago:

git --bare init

crea los archivos Cuando escribo

git branch master 

dice:

fatal: Not a valid object name: 'master'.
Roy van Zanten
fuente
El mismo resultado al intentar generar una nueva sucursal:git branch newbranch
Sören

Respuestas:

281

Cuando git inituna carpeta no crea una rama maestra

Esto es cierto, y el comportamiento esperado. Git no creará una masterrama hasta que confirmes algo.

Cuando lo hago git --bare init, crea los archivos.

Un non-bare git inittambién creará los mismos archivos, en un .gitdirectorio oculto en la raíz de su proyecto.

Cuando escribo git branch masterdice "fatal: no es un nombre de objeto válido: 'maestro'"

Ese es de nuevo el comportamiento correcto. Hasta que te comprometas, no hay una rama maestra .

No has hecho una pregunta, pero responderé la pregunta que supuse que querías hacer. Agregue uno o más archivos a su directorio, y git addellos para preparar una confirmación. Luego git commitpara crear su commit inicial y masterrama.

meagar
fuente
3
Entonces, ¿qué pasa si nunca quisiera un puntero de rama llamado "maestro"? ¿Qué pasa si quisiera que se llamara "main"? ¿No hay forma de comenzar con un nombre diferente para el primer puntero de rama? No hay parámetros "git init"? ¿Podría cambiar el nombre que figura en .git / HEAD? ¿Hay otros archivos que deba modificar también?
Jemenake
1
@Jemenake Luego inicie su repositorio, realice una confirmación y cambie el nombre de la rama. Si realmente desea evitar que se cree una rama "maestra", edite .git/HEADy cambie refs/heads/mastera refs/heads/main, pero no hay ninguna razón para hacerlo. Simplemente cambie el nombre de su rama después de la primera confirmación.
meagar
13
puede usar git checkout -b <branchname>para cambiar HEAD; no necesita editar el archivo.
Superfly Jon
1
La última parte era dorada, TFS GIT viene con un repositorio de git totalmente sin inicializar. Entonces, después del primer clon usando SourceTree, nada funciona, no pude resolverlo durante mucho tiempo hasta "Entonces git commit para crear su commit inicial y la rama maestra". ¿Realmente no hay forma de tener master-local / remote sin commit / push inicial?
Pawel Cioch
La última explicación me ayuda a comprender que la rama no puede existir si no hay confirmaciones.
Mayur Patil
23

Git crea una rama maestra una vez que hayas realizado tu primer commit. No hay nada para tener una rama si no hay código en el repositorio.

usuario489998
fuente
1
Pero necesita una nueva sucursal para ingresar a master.
Sören
1
Aquí hay una pregunta con respecto a 'Git crea una rama maestra una vez que haya realizado su primer commit' Entonces, ¿por qué el 'estado de git' muestra 'On Branch Master' antes de todo esto?
Tick20
16

En primer lugar, cuando crea un "repositorio desnudo", no va a trabajar con él (no contiene una copia de trabajo, por lo que el git branchcomando no es útil).

Ahora, la razón por la que no tendría una masterrama incluso después de hacer una git inites porque no hay confirmaciones: cuando cree su primera confirmación, tendrá una masterrama.

Borealid
fuente
1
De acuerdo, eso está claro. Pero cuando lo cometo dice: fatal: identidad vacía
Roy van Zanten
Lo arreglé para. Pero cuando quiero obtener / recuperar este repositorio desde otra computadora. ¿Debo hacer git init allí para?
Roy van Zanten
@RoyvanZanten Se puede utilizar git clonepara ahorrar tener que hacer un git initen el lado del receptor.
Borealid
Me las arreglé para que todo funcionara. Sin errores. Pero cuando trato de presionarlo dice: Escribir objetos <bla> bla> Total <3/3> AL SERVIDOR 59fa0tweirdcod04 master> master Pero cuando reviso los archivos en el servidor no hay nada allí.
Roy van Zanten
@RoyvanZanten ¿Está mirando el repositorio del servidor o la copia de trabajo del servidor ? Debe hacer un git checkoutsi desea que el WC refleje lo que hay en el .gitdirectorio (que es donde presionó).
Borealid
12

Debe comprometerse al menos una vez en master antes de crear una nueva rama.

Fundhor
fuente