Soy un novato en git y sigo leyendo sobre una rama "maestra". ¿Es "maestro" solo un nombre convencional que la gente usa o tiene un significado especial como HEAD
?
Cuando lo hago git branch
en el clon que tengo, solo veo 1 rama única, en la que estoy. Ningún "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.
Solo estoy confundido sobre por qué mi clon no tiene un master
que todos parecen insinuar que siempre existe.
git add .
,git commit -m "Test"
y, a continuacióngit push -u origin master
.git ls-remote origin master
no muestra nada.Para verificar una rama que no existe localmente pero que está en el repositorio remoto, puede usar este comando:
fuente
fatal: Cannot update paths and switch to branch 'master' at the same time.
master
es solo el nombre de una rama, no tiene nada de mágico excepto que se crea por defecto cuando se crea un nuevo repositorio.Puede volver a agregarlo con
git checkout -b master
.fuente
git checkout -b master
solo agrega una nueva rama de la actual para mí.git checkout -b master
creará unamaster
rama a partir de lo queHEAD
sea, así que si estás en otra rama, creará unamaster
rama a partir de ella. Excepto si ya tiene unamaster
rama (lo que tendrá, a menos que, por ejemplo, la haya eliminado o nunca se haya comprometido en ella). Si ya tiene unamaster
rama, este comando solo le dará un error.master
es solo una rama, que se puede eliminar congit branch -d master
. Aunque git lo protegerá de eliminar la rama en la que se encuentra actualmente, no hay nada especial que proteja lamaster
rama. Más específicamente que eso, es difícil decir cómo lo hizo. ¿Quizás usas elhistory
comando de tu shell para echar un vistazo?git checkout -b master
solo funcionará cuando HEAD esté configurado como origin / master. En cualquier otro caso (por ejemplo, estás en 'desarrollar'),git checkout -b master
creará una rama llamada 'maestro' que se basa en la posición HEAD actual (por ejemplo, de 'desarrollar'). También debe indicar qué rama será la estopa para la nueva. @Bunyk tiene la respuesta correcta en este hilo: stackoverflow.com/a/21330943/287109De 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 comprometía, git creaba mi rama maestra.fuente
En mi caso, había una rama de desarrollo pero no una rama maestra . Por lo tanto, cloné el repositorio apuntando el HEAD recién creado a la rama existente. Luego creé la rama maestra que faltaba y actualicé HEAD para apuntar a la nueva rama maestra.
fuente
si se trata de un nuevo repositorio que ha clonado, es posible que aún esté vacío, en cuyo caso:
git push -u origin master
probablemente debería solucionarlo.
(Lo hice en mi caso. No estoy seguro de que sea el mismo problema, pensé que debería publicar esto por si acaso. Podría ayudar a otros).
fuente
Me encontré con el mismo problema y descubrí el problema. Cuando inicializa un repositorio, en realidad no hay ramas. Cuando inicie la ejecución de un proyecto
git add .
y luego segit commit
creará la rama maestra.Sin registrar nada, no tiene una rama maestra. En ese caso, debe seguir los pasos que otras personas aquí han sugerido.
fuente
Parece que debe haber al menos una confirmación local en la rama maestra para hacer:
Entonces, si lo hizo
git init .
y luegogit remote add origin ...
, aún debe hacer:fuente