Impossible de Git-push master vers Github - 'origin' ne semble pas être un référentiel git / autorisation refusée

84

Cette question est liée à mon problème de compréhension du rebase, de la branche et de la fusion , et au problème

Comment pouvez-vous vous engager sur votre compte github alors que vous avez un teamMate dans votre liste distante?

J'ai découvert que d' autres personnes ont eu le même problème. Le problème semble être lié à /etc/xinet.d/.

Problème: impossible de pousser ma branche locale vers ma branche principale sur Github

je cours

git push origin master

Je reçois

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Le message d'erreur me suggère que la branche 'origine' n'est pas dans mon dépôt git local. De cette façon, Git arrête de se connecter à Github.

C'est étrange, car je n'ai pas supprimé la branche «origine».

Mon arbre git est

  dev
* master
  ticgit
  remotes/Math/Math
  remotes/Math/master
  remotes/origin/master
  remotes/Masi/master

Comment pouvez-vous pousser votre branche locale vers Github , alors que vous avez une branche teamMate dans votre Git local?


La réponse de VonC résout le problème principal. J'ai mis un passphares à mes clés ssh.

je cours

$git push github master     

Je reçois

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Il semble que j'ai besoin de donner la phrase de passe pour Git d'une manière ou d'une autre.

Comment pouvez-vous faire en sorte que Github vous demande votre phrase de passe plutôt que de vous fier à la clé ssh?

Léo Léopold Hertz 준영
la source
Je viens de mettre à jour ma réponse. Les paramètres Ssh ne sont pas tous. user.name et github.user sont également importants
VonC
Mis à jour ma réponse à nouveau, avec quelques vérifications de configuration ssh supplémentaires
VonC
"Autorisation refusée (publickey)." signifie en fait que vous avez essayé de vous connecter à l'aide de votre clé de publication et que l'autorisation a été refusée, plutôt que de ne pas avoir accès à votre clé de publication.
Xiong Chiamiov
Mon problème était une clé ssh différente d'un autre système. J'ai téléchargé l'autre clé et tout allait bien. Je l'ai découvert avec l'astuce ssh -v [email protected].
nalply

Réponses:

96

Que fait

$ git config --get-regexp '^(remote|branch)\.'

renvoie (exécuté dans votre référentiel git)?

Origin n'est qu'une convention de dénomination par défaut pour faire référence à un référentiel Git distant.

S'il ne fait pas référence à GitHub (mais plutôt à un chemin vers votre référentiel de coéquipier, chemin qui peut ne plus être valide ou disponible), ajoutez simplement une autre origine, comme dans cette entrée de Bloggitation

$ git remote add origin2 [email protected]:myLogin/myProject.git
$ git push origin2 master

(J'utiliserais en fait le nom 'github' plutôt que 'origin' ou 'origin2')


Autorisation refusée (publickey).
fatal: l'extrémité distante a raccroché de manière inattendue

Vérifiez si votre identité gitHub est correctement déclarée dans votre référentiel Git local, comme indiqué dans le guide d'aide GitHub . (à la fois user.name et github.name - et github.token)

Ensuite, le blog stonean suggère (comme le fait Marcio Garcia ):

$ cd ~/.ssh
$ ssh-add id_rsa

Aral Balkan ajoute: créer un fichier de configuration

La solution était de créer un fichier de configuration sous ~ / .ssh / comme indiqué au bas de la section OS X de cette page .

Voici le fichier que j'ai ajouté, selon les instructions sur la page, et mes poussées ont recommencé à fonctionner:

Host github.com
User git
Port 22
Hostname github.com
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

Vous pouvez également publier le résultat de

ssh -v [email protected]

pour avoir plus d'informations sur les raisons pour lesquelles la connexion ssh GitHub vous rejette.

Vérifiez également que vous avez entré correctement votre clé publique (elle doit se terminer par ' ==').
Ne collez pas votre clé privée, mais votre clé publique. Une clé publique ressemblerait à quelque chose comme:

ssh-rsa AAAAB3<big string here>== [email protected] 

(Remarque: avez-vous utilisé une phrase de passe pour vos clés ssh? Ce serait plus facile sans une phrase de passe)

Vérifiez également l'url utilisée lors du push ( [email protected]/..., non git://github.com/...)

Vérifiez que vous disposez d'un agent SSH pour utiliser et mettre en cache votre clé.

Essaye ça:

 $ ssh -i path/to/public/key [email protected]

Si cela fonctionne, cela signifie que votre clé n'est pas envoyée à GitHub par votre client ssh.

VonC
la source
1
dommage que je ne puisse pas te voter plus d'une fois! J'ai eu ce problème deux fois en deux semaines et après l'avoir cherché sur Google à chaque fois, j'ai trouvé ce message SO. MERCI! :)
Ionuț Staicu
1
J'étais aux prises avec ça - j'avais changé toute la configuration de git, mais ssh-add était l'étape qui me manquait - merci beaucoup!
metadaddy
C'était juste une petite suggestion dans le contexte de cette excellente réponse - mais j'adore le fait de renommer "Origin" en "GitHub" (ou nom de serveur), cela aide vraiment à conceptualiser où vous envoyez les choses.
Alex C
Cela a fonctionné pour moi aussi. Si vous suivez les instructions sur github, l'origine n'est pas immédiatement évidente.
pseudo
help.github.com/win-set-up-git suivez jusqu'à la fin - cela m'a aidé. Autorisation refusée (publickey). - signifie que vous avez configuré une clé ssh pour vous git sur votre machine locale. ssh-keygen -t rsa -C "[email protected]"
Roger Alien
28

C'est un problème avec votre télécommande. Lorsque vous le faites git push origin master, originc'est la télécommande et masterla branche que vous poussez.

Lorsque vous faites ceci:

git remote

Je parie que la liste ne comprend pas origin. Pour rajouter la télécommande d'origine:

git remote add origin [email protected]:your_github_username/your_github_app.git

Ou, s'il existe mais n'est pas formaté correctement:

git remote rm origin
git remote add origin [email protected]:your_github_username/your_github_app.git
Sarah Mei
la source
10

La réponse de VonC est la meilleure, mais la partie qui a fonctionné pour moi était super simple et est en quelque sorte enterrée parmi beaucoup d'autres réponses possibles. Si vous êtes comme moi, vous avez rencontré ce problème lors de l'exécution d'un didacticiel de démarrage avec rails et vous n'avez PAS configuré vos clés SSH publiques / privées.

Si oui, essayez ceci:

  1. $>cd ~/.ssh

  2. $>ls

  3. Si la sortie de ls est known_hostset rien d'autre, visitez: http://help.github.com/mac-key-setup/ et commencez à suivre les instructions de la section "Générer une clé" et vers le bas.

Après avoir exécuté ces instructions, ma commande "git push origin master" a fonctionné.

johnnygoodman
la source
je cherchais juste cette page. merci beaucoup! = D
Hugo Mota
Cela a résolu mon problème. Mon système d'exploitation est Mac OS X, et je suivais le livre "Ruby on Rails 3 Tutorial", et je suis resté coincé à la section 1.3.4 quand je devais faire un git push origin master.C'était la première fois que je configurais Git et Rails. Espérons que cela a aidé d'autres personnes.
sivabudh
4

J'ai le même problème et je pense que le pare-feu bloque le protocole git. Donc, à la fin, je dois recourir à l'utilisation de https: // pour récupérer et pousser. Cependant, cela invitera toujours l'utilisateur à entrer le mot de passe ...

voici l'exemple de ce qui fonctionne pour moi (juste pour partager avec ceux qui ne peuvent pas utiliser git: // protocole :)

git fetch https://[user-name]@github.com/[user-name]/[project].git

si cela fonctionne, vous pouvez supprimer l'origine et la remplacer par

git remote rm origin  
git remote add origin https://[user-name]@github.com/[user-name]/[project].git
Ken
la source
1
Vous pouvez utiliser le ~/.netrcfichier pour stocker le mot de passe pour vous si vous le souhaitez. Il est utilisé par curl, qui est ce que git utilise pour les transferts HTTP (S), au cas où vous auriez besoin de rechercher les détails de son utilisation.
Arrowmaster
1
@Arrowmaster: notez que si vous êtes sous Windows, vous devez utiliser ~/_netrc(' _', pas ' .')
VonC
Merci pour les commentaires, je vais essayer ça!
ken
Cela a fonctionné pour moi. Merci. Je me demande si c'est un bug ou non.
Larry Battle
1

Je pense que c'est un autre cas de messages d'erreur git trompeurs. Habituellement, quand j'ai vu cette erreur, c'est dû à des problèmes ssh. Avez-vous ajouté votre clé publique ssh à votre compte github?

Edit: De plus, le message du forum xinet.d fait référence à l'exécution de git-daemon en tant que service afin que les gens puissent tirer de votre système. Il n'est pas nécessaire d'exécuter git-daemon pour pousser vers github.

Aaron
la source
1
J'ai ajouté ma clé publique à mon compte github. - Le problème a commencé après avoir ajouté une branche distante à mon Git.
Léo Léopold Hertz 준영
1
J'ai créé une nouvelle paire de clés ssh. J'ai collé la nouvelle clé sur Github et supprimé l'ancienne de Github. Le même problème persiste.
Léo Léopold Hertz 준영
1

J'ai eu le même problème et je viens d'ajouter le contenu de ~ / .ssh / id_rsa.pub à mon compte dans GitHub. Après cela, essayez à nouveau git push origin master, cela devrait fonctionner.

Julio Menendez
la source
0

La chose clé à retenir est que «origin» n'est pas la valeur que vous devrez peut-être utiliser ... cela a fonctionné pour moi lorsque j'ai remplacé «origin» par le nom du repo.

ATSiem
la source
0

Une possibilité que les réponses ci-dessus ne traitent pas est que vous ne pouvez pas avoir d'accès ssh depuis votre shell. C'est-à-dire que vous êtes peut-être dans un réseau (certains réseaux universitaires le font) où le service ssh est bloqué.Dans ce cas, vous pourrez non seulement obtenir des services github mais également tout autre service ssh. Vous pouvez tester si tel est le problème en essayant d'utiliser n'importe quel autre service ssh, c'était le cas avec moi.

Sravan
la source
0

J'ai eu ce problème et j'ai essayé diverses solutions pour le résoudre, y compris plusieurs de celles énumérées ci-dessus (fichier de configuration, debug ssh, etc.). En fin de compte, je l'ai résolu en incluant le commutateur -u dans le git push, selon les instructions de github lors de la création d'un nouveau référentiel sur site - nouveau référentiel Github

sjpknight
la source