Je suis un git newbie et je continue à lire sur une branche "master". Est-ce que «maître» est juste un nom conventionnel utilisé par les gens ou at-il une signification particulière HEAD
?
Quand je fais git branch
sur le clone que j'ai, je ne vois qu'une seule branche - celle sur laquelle je suis. Pas de "maître" du tout. Si je tape git checkout master
(comme je le vois dans de nombreux tutoriels ou guides), j'obtiens
error: pathspec 'master' did not match any file(s) known to git.
Je ne comprends simplement pas pourquoi mon clone n'a pas master
que tout le monde semble impliquer qu'il existe toujours.
git add .
,git commit -m "Test"
puisgit push -u origin master
.git ls-remote origin master
ne montre rien.Pour extraire une branche qui n'existe pas localement mais qui se trouve dans le dépôt distant, vous pouvez utiliser cette commande:
la source
fatal: Cannot update paths and switch to branch 'master' at the same time.
master
est juste le nom d'une branche, il n'y a rien de magique à ce sujet sauf qu'il est créé par défaut lors de la création d'un nouveau référentiel.Vous pouvez le rajouter avec
git checkout -b master
.la source
git checkout -b master
ajoute juste une nouvelle branche à celle actuelle pour moi.git checkout -b master
créera unemaster
branche à partir de ce quiHEAD
est - donc si vous êtes sur une autre branche, cela créera unemaster
branche à partir de cela. Sauf si vous avez déjà unemaster
branche (ce que vous aurez, sauf si par exemple vous l'avez supprimée ou ne vous y êtes jamais engagée). Si vous avez déjà unemaster
branche, cette commande vous donnera juste une erreur.master
n'est qu'une branche, qui peut être supprimée avecgit branch -d master
. Bien que git vous protège de la suppression de la branche sur laquelle vous vous trouvez actuellement, rien de spécial ne protège lamaster
branche. Plus précisément, il est difficile de dire comment vous l'avez fait. Peut-être utilisez-vous lahistory
commande de votre shell pour jeter un coup d'œil?git checkout -b master
ne fonctionnera que lorsque HEAD est réglé sur origine / maître. Dans tous les autres cas (par exemple, vous êtes sur 'develop'),git checkout -b master
créera une branche nommée 'master' qui est basée sur la position actuelle de HEAD (par exemple à partir de 'develop'). Vous devez également indiquer quelle branche sera la base de la nouvelle. @Bunyk a la bonne réponse sur ce fil: stackoverflow.com/a/21330943/287109J'ai en fait eu le même problème avec un tout nouveau référentiel. J'avais même essayé d'en créer un avec
git checkout -b master
, mais cela ne créerait pas la branche. J'ai alors réalisé que si je faisais des changements et les validais, git créait ma branche master.la source
Dans mon cas, il y avait une branche develop mais pas de branche master . Par conséquent, j'ai cloné le référentiel en pointant le HEAD nouvellement créé vers la branche existante. Ensuite, j'ai créé la branche principale manquante et mis à jour HEAD pour pointer vers la nouvelle branche principale.
la source
s'il s'agit d'un nouveau dépôt que vous avez cloné, il peut encore être vide, auquel cas:
git push -u origin master
devrait probablement régler le problème.
(fait dans mon cas. Je ne suis pas sûr que ce soit le même problème, j'ai pensé que je devrais publier ceci juste au cas où. pourrait aider les autres.)
la source
J'ai rencontré le même problème et compris le problème. Lorsque vous initialisez un référentiel, il n'y a en fait aucune branche. Lorsque vous démarrez une course de projet
git add .
, puisgit commit
et la branche principale sera créé.Sans rien vérifier, vous n'avez pas de branche principale. Dans ce cas, vous devez suivre les étapes suggérées par d'autres personnes ici.
la source
Il semble qu'il doit y avoir au moins un commit local sur la branche master à faire:
Donc, si vous l'avez fait
git init .
et ensuitegit remote add origin ...
, vous devez toujours faire:la source