2012-02-06 45 views
113

Tengo un servidor privado correr git 1,7 Cuandofatal: No es un nombre de objeto válido: 'maestro'

git init 

una carpeta que no crea una rama principal. Porque cuando hago:

git branch 

que no muestra nada. cuando lo haga:

git --bare init 

que crea los archivos. Cuando escribo

git branch master 

Dice:

fatal: Not a valid object name: 'master'. 

Respuesta

170

Cuando git init una carpeta que no crea una rama principal

Esto es cierto, y el comportamiento esperado. Git no creará una rama master hasta que no confirme algo.

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

Un no-desnudo git init también creará los mismos archivos, en un .git directorio oculto en la raíz de su proyecto.

Cuando escribo git branch master dice "fatal: No es un nombre de objeto válido: 'maestro'"

Eso es de nuevo un comportamiento correcto. Hasta que se comprometa, no hay rama maestra.

No ha hecho una pregunta, pero responderé a la pregunta que asumí que quiere hacer. Agregue uno o más archivos a su directorio y git add para preparar una confirmación. A continuación, git commit para crear su confirmación inicial y sucursal master.

+1

Entonces, ¿qué pasa si nunca quise un puntero de rama llamado "maestro" en absoluto? ¿Y si quisiera que se llamara "principal"? ¿No hay forma de comenzar con un nombre diferente para el primer puntero de rama? ¿No hay parámetros de "git init"?¿Podría cambiar el nombre que aparece en .git/HEAD? ¿Hay algún otro archivo que necesite modificar, también? – Jemenake

+1

@Jemenake Luego inicie su repositorio, realice una confirmación y cambie el nombre de la rama. Si realmente quiere evitar que se cree una rama "maestra", edite '.git/HEAD', y cambie' refs/heads/master' por 'refs/heads/main', pero no hay razón alguna * para hacer esto. Simplemente cambie el nombre de su rama después de la primera confirmación. – meagar

+7

puede usar 'git checkout -b ' para cambiar HEAD - no necesita editar el archivo. –

14

En primer lugar, cuando crea un "repositorio vacío", no va a hacer ningún trabajo con él (no contiene una copia de trabajo, por lo que el comando git branch no es útil).

Ahora, la razón por la que no tendría una rama master incluso después de hacer un git init es que no hay confirmaciones: cuando se crea la primera confirmación, a continuación, tiene una rama master.

+1

Bueno, eso está claro. Pero cuando me comprometo dice: fatal: ident vacío –

+0

Lo arreglé para. Pero cuando quiero sacar/traer este repositorio desde otra computadora. ¿Debo hacer git init allí? –

+0

@RoyvanZanten Puedes usar 'git clone' para ahorrar tener que hacer un' git init' en el lado del receptor. – Borealid

14

Git crea una rama principal una vez que ha realizado su primer compromiso. No hay nada para tener una rama si no hay código en el repositorio.

4

Debe confirmar al menos una vez en el maestro antes de crear una nueva bifurcación.

Cuestiones relacionadas