Pregunta ¿Por qué mi 'rama git' no tiene maestro?


Soy un novato git y sigo leyendo sobre una sucursal "maestra". ¿Es "maestro" solo un nombre convencional que la gente usó o tiene un significado especial como HEAD?

Cuando lo hago git branch en el clon que tengo, solo veo una sola rama, en la que estoy. Sin "maestro" en absoluto. Si escribo git checkout master (como veo en muchos tutoriales o guías), obtengo

error: pathspec 'master' did not match any file(s) known to git.

Estoy confundido sobre por qué mi clon no tiene un master que todo el mundo parece implicar que siempre existe.


74
2017-09-02 04:08


origen


Respuestas:


La mayoría de los repositorios Git usan master como la rama principal (y predeterminada) - si inicializa un nuevo repositorio de Git a través de git init, tendrá master revisado por defecto.

Sin embargo, si clona un repositorio, la rama predeterminada que tiene es cualquiera que sea el control remoto HEAD puntos a (HEAD es en realidad un ref simbólico que apunta a un nombre de rama). Entonces, si el repositorio que clonaste tenía HEAD señalado, por ejemplo, foo, entonces tu clon solo tendrá un foo rama.

El control remoto desde el que clonaste aún podría tener un master rama (se puede consultar con git ls-remote origin master), pero no habría creado una versión local de esa rama de forma predeterminada, porque git clone solo revisa el control remoto HEAD.


60
2017-09-02 04:10



Para pagar una sucursal que no existe localmente pero está en el repositorio remoto, puede usar este comando:

git checkout -t -b master origin/master

78
2018-01-24 11:01



master es solo el nombre de una rama, no tiene nada de mágico, excepto que se crea de forma predeterminada cuando se crea un nuevo repositorio.

Puedes agregarlo de nuevo con git checkout -b master.


34
2017-09-02 04:12



De hecho, tuve el mismo problema con un repositorio completamente nuevo. Incluso había intentado crear uno con git checkout -b master, pero no crearía la rama. Luego me di cuenta de que si hacía algunos cambios y los cometía, git creó mi rama principal.


20
2017-08-21 22:39



En mi caso, había un desarrollar rama pero no dominar rama. Por lo tanto, cloné el repositorio apuntando el HEAD recién creado a la rama existente. Luego creé la falta dominar bifurque y actualice HEAD para señalar a la nueva rama principal.

git clone git:repositoryname --branch otherbranch
git checkout -b master
git update-ref HEAD master
git push --set-upstream origin master

12
2018-06-04 09:50



si se trata de un nuevo repositorio que ha clonado, aún puede estar vacío, en cuyo caso:

git push -u origin master 

debería solucionarlo

(lo hice en mi caso. No estoy seguro si este es el mismo problema, pensé que debería publicar esto solo en caso de que pudiera ayudar a otros).


9
2018-03-21 17:48



Me encontré con el mismo problema y resolvió el problema. Cuando inicializas un repositorio, en realidad no hay ramas. Cuando comienzas un proyecto ejecuta git add . y entonces git commit y la rama maestra será creada.

Sin verificar nada, no tienes una rama maestra. En ese caso, debe seguir los pasos que otras personas han sugerido.


6
2017-11-24 23:44



Parece que debe haber al menos un compromiso local en la rama principal para hacer:

git push -u origin master

Entonces si lo hiciste git init . y entonces git remote add origin ..., aún tienes que hacer:

git add ...
git commit -m "..."

0
2018-01-24 22:47