fatal: le maître de branche actuel n'a pas de branche en amont

227

J'essaie de pousser l'un de mes projets vers github, et je reçois toujours cette erreur:

peeplesoft@jane3:~/846156 (master) $ git push

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

     git push --set-upstream origin master

J'ai donc essayé et obtenu ceci:

peeplesoft@jane3:~/846156 (master) $ git push --set-upstream origin master

fatal: Authentication failed

Un autre thread stackoverflow m'a suggéré d'essayer ce qui suit, avec des résultats décevants.

peeplesoft@jane3:~/846156 (master) $ git push -u origin master

fatal: Authentication failed

Ensuite, j'ai essayé ceci:

peeplesoft@jane3:~/846156 (master) $ git config remote.origin.push HEAD

peeplesoft@jane3:~/846156 (master) $ git push

fatal: Authentication failed

Des indices?

user1524361
la source
1
Le dépôt doit exister sur github avant de pouvoir y pousser. Le fait-il? Et le repo avec lequel vous travaillez est-il un clone?
mat
J'ai cloné le dépôt à partir de Github, puis j'ai ajouté 1 ligne à un fichier Lisez-moi et j'ai ensuite essayé de le repousser.
user1524361
1
j'obtenais la même erreur car j'ai oublié de valider les fichiers
Mateen
3
-u et --set-upstream sont les mêmes
brainLoop
gitJe voulais que tout le monde sache que les commandes affichées par l'OP m'ont aidé, encore plus que les réponses
Nathan

Réponses:

94

Vous avez corrigé le push, mais, indépendamment de ce problème de push (que j'ai expliqué dans " Pourquoi ai-je besoin de pousser explicitement une nouvelle branche? ": git push -u origin masterOu git push -u origin --all), vous devez maintenant résoudre le problème d'authentification.

Cela dépend de votre URL (ssh comme dans ' [email protected]/yourRepo, ou https comme dans https://github.com/You/YourRepo)

Pour l'URL https:

Si votre compte est protégé par l' authentification à deux facteurs , votre mot de passe normal ne fonctionnera pas (pour l'URL https), comme expliqué ici ou ici .

Même problème si votre mot de passe contient un caractère spécial (comme dans cette réponse )

Si https ne fonctionne pas (parce que vous ne voulez pas générer de clé secondaire, un PAT: Personal Access Token), vous pouvez passer à ssh, comme je l'ai montré ici .


Comme indiqué par qwerty dans les commentaires, vous pouvez créer automatiquement la branche du même nom sur la télécommande avec:

git push -u origin head 

Pourquoi?

  • HEAD (voir votre .git\HEADfichier) a le refspec de la branche actuellement vérifié (par exemple: ref: refs/heads/master)
  • la politique push par défaut est simple

Puisque la refpec utilisée pour cette poussée est head: (pas de destination), un :<dst>moyen manquant pour mettre à jour la même ref que la <src>(head, qui est une branche).

Cela ne fonctionnera pas si HEAD est détaché .

VonC
la source
1
génial, c'est ce dont nous avons besoin pour résoudre le problème de la cause première, pas seulement le résoudre en surface
workplaylifecycle
Si vous êtes sur une branche, cela est utile git push origin head -u. Crée automatiquement la branche du même nom sur la télécommande.
Qwerty
1
@Qwerty Merci, bon point. J'ai inclus votre commentaire (avec des détails supplémentaires) dans la réponse pour plus de visibilité.
VonC
115

Vous pouvez également utiliser la commande suivante:

git push -u origin master

Cela crée (-u) une autre branche dans votre référentiel distant. Une fois l'authentification effectuée avec ssh, c'est le cas.

TantrajJa
la source
2
Ceci est vraiment pertinent pour le problème, car le problème concerne l'authentification. Il a également déclaré qu'il avait déjà essayé cela dans son poste.
Mike Precup
2
J'ai voté pour 2 raisons. 1er: le PO a déclaré qu'il avait déjà essayé cela. 2ème: -uoption est le raccourci pour l' --set-upstreamoption qui n'a rien à voir avec la création d'une nouvelle branche. De la documentation de l' option -uou--set-upstream : "Pour chaque branche qui est à jour ou poussée avec succès, ajoutez une référence en amont (tracking), utilisée par git-pull [1] sans argument et d'autres commandes.". En fait, je ne comprends pas pourquoi cette réponse a été autant votée qu'elle est trompeuse.
louisfischer
38

Apparemment, vous obtenez également ce message d'erreur lorsque vous oubliez le --allparamètre lorsque vous appuyez pour la première fois. J'ai écrit

git push -u origin

qui a donné cette erreur, il aurait dû être

git push -u origin --all

Oh comme j'aime ces erreurs de copier-coller ...

L'oeil
la source
3
Merci. J'obtenais cette erreur dans Visual Studio Code et cela a fonctionné, mais dans le contexte de plusieurs développeurs, quelqu'un peut-il expliquer ce que cela a fait?
Hell.Bent
15

Vous devez d'abord configurer la télécommande, puis appuyez sur.

git remote add origin url-to-your-repo

Instructions réelles

Santosh Pillai
la source
13

Veuillez essayer ce scénario

git push -f --set-upstream origin master
lorem
la source
7
Vous devriez fournir plus d'explications sur comment et pourquoi cela fonctionne.
Benoît Latinier
6
"pas mal" est une très mauvaise explication de quoi que ce soit. "pas mal" rend votre réponse vraiment mauvaise.
GhostCat
Cela ne fait rien pour corriger l'erreur OP mentionnée: "Échec de l'authentification"
Sean the Bean
Oui. Cela a fonctionné pour moi. Je pense que cela force le commit à la branche amont (distante).
vkg
12

Si vous définissez l'action git pushqu'il doit entreprendre si aucune spécification de référence n'est indiquée sur la ligne de commande, aucune spécification de référence n'est configurée dans la télécommande et aucune spécification de référence n'est impliquée par aucune des options fournies sur la ligne de commande.

Simplement fais-le:

git config --global push.default current

puis

git push
DariusV
la source
1
Vous devez savoir que cela modifie vos paramètres git globaux, ce qui peut avoir des effets négatifs. Mais c'était exactement ce que je cherchais.
Mavamaarten
@Mavamaarten quels sont les effets indésirables potentiels?
kosii
7

Eh bien, j'avais le même problème lors du téléchargement et je l'ai résolu en faisant la même chose qu'il dit de faire: plus tôt, j'essayais de pousser le terminal vers mon référentiel sous Linux par https comme

git push https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git

Mais je n'obtenais aucun résultat et je suis donc allé plus loin et j'ai essayé:

git push --set-upstream https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git master

Et ça a marché. Ainsi, vous recevrez un nom d'utilisateur et un mot de passe. J'ai également généré un jeton et au lieu du mot de passe, j'ai collé le jeton et ainsi, cela s'est fait avec succès.

  1. Pour générer un jeton, accédez à votre compte Github et dans les paramètres du développeur, puis créez un autre jeton.
  2. Après avoir obtenu cela, copiez ce jeton et collez l'invite de mot de passe lorsque cela vous est demandé.
Siddharth Choudhary
la source
6

sur un côté très simple, une fois que vous avez d'autres branches, vous ne pouvez pas simplement utiliser pour pousser une branche

git push

Mais vous devez spécifier la branche maintenant, même si vous avez extrait la branche que vous souhaitez pousser, donc

git push origin <feature_branch>

Où peut être même la mastersuccursale

Abhishek
la source
5

J'ai fait la simple erreur d'oublier de commettre:

git commit -m "first commit"

puis git push origin mastertravaillé.

yl_low
la source
4

J'ai eu le même problème

entrez la description de l'image ici

Je l'ai résolu en utilisant la commande ci-dessous

$ git branch --set-upstream develop origin/develop

et il ajoutera une configuration dans le fichier de configuration dans le dossier .git.

entrez la description de l'image ici

bluetata
la source
3

Première utilisation git pull origin your_branch_name Ensuiteuse git push origin your_branch_name

FRabbi
la source
Désolé si cela semble idiot. Comment connaître le nom de ma succursale. Mon dépôt est dans AWS.
Pravinraj Venkatachalam
Utilisez "git branch"
Darius Miliauskas
3

Il existe une solution simple à cela qui a fonctionné pour moi sur macOS Sierra. J'ai fait ces deux commandes:

git pull --rebase git_url(Ex: https://github.com/username/reponame.git)
git push origin master

S'il montre une erreur fatale concernant l'amont après une future poussée, exécutez simplement:

git push --set-upstream origin master
theRana
la source
0

1. Un ordinateur et votre github associés. Utilisez SSH. Code informatique pour que vous n'ayez pas à soumettre de vérification. Entrez la description de l'image ici

2. git ne peut pas gérer de dossier vide. Vous devez donc écrire un tel readme.md enregistré dans un fichier. Sinon, vous ne trouverez pas le fichier.

3. Votre projet local n'est rien de nouveau pour les projets. S'il vous plaît

git init

git remote add origin +"githublink"

git add .

git commit -m "" vas y encore.

4. puis git pull origin master(la clé)

5. Enfin git push origin master(résoudre tous les problèmes).

http://my.oschina.net/psuyun/blog/123005参考 链接

王 逍遥
la source
0

Si vous essayez de pousser votre code directement vers la branche principale, utilisez la commande

git push origin master

Ça m'aide.

HitechZa
la source
0

J'ai aussi eu la même erreur, je pense que c'est parce que je l'ai cloné et que j'ai essayé de repousser. $ git push -u origin master C'est la bonne commande.

Compter les objets: 8, c'est fait. Compression Delta utilisant jusqu'à 2 threads. Compression d'objets: 100% (4/4), fait. Écriture d'objets: 100% (8/8), 691 octets | 46,00 Kio / s, fait. Total 8 (delta 1), réutilisé 0 (delta 0) à distance: résolution des deltas: 100% (1/1), fait.

  • [new branch] master -> master Branch master set to track remote remote master from origin.

    It was successful. Try to create new u branch 
    
Malsha
la source
0

J'ai eu le même problème, la cause était que j'avais oublié de spécifier la branche

git push myorigin feature/23082018_my-feature_eb
Noir
la source
0

Pour moi, je poussais les modifications vers un référentiel privé auquel je n'avais pas accès en écriture. Assurez-vous que vous disposez des droits d'accès valides lors de l'exécution d'opérations push ou pull.

Vous pouvez directement vérifier via

mayank dhawariya
la source
1
"Vérifier directement via" quoi?
Mike Poole
0

Pour moi, c'était parce que j'avais supprimé le dossier caché .git .

Je l'ai corrigé en supprimant le dossier, en re-clonant et en effectuant à nouveau les modifications.

AmmarBaali
la source
0

Si vous êtes sur une branche, vous pouvez utiliser ceci:

git push origin head -u

Cela créera automatiquement une nouvelle branche du même nom sur la télécommande.

Qwerty
la source
-1

Pour résoudre ce problème, tout en vérifiant le code de gitlui-même, vous devez donner la commande comme ci-dessous:

git checkout -b branchname origin/branchname

Ici, par défaut, nous définissons the upstream branch, vous ne serez donc pas confronté au problème mentionné.

Deepa
la source
-2

Pour moi, le problème vient du nom de ma branche: "# nom-de-ma-branche", sans "#" ça marche très bien!

aurelienv
la source