84 votes

Impossible de pousser le master vers Github - 'origin' ne semble pas être un dépôt git / permission refusée

Cette question est liée à mon problème dans comprendre les notions de rebasement, de branchement et de fusion , et au problème

Comment pouvez-vous commiter sur votre compte github alors que vous avez un coéquipier 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 master 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 'origin' n'est pas dans mon dépôt git local. De cette façon, Git cesse de se connecter à Github.

C'est étrange, car je n'ai pas supprimé la branche 'origin'.

Mon arbre git est

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

Comment pousser votre branche locale vers Github ? alors que vous avez une branche de TeamMate dans votre Git local ?


La réponse de VonC résout le problème principal. J'ai mis un passphares sur 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 je doive donner la phrase de passe pour Git d'une manière ou d'une autre.

Comment faire en sorte que Github demande votre phrase de passe plutôt que de s'appuyer sur la clé ssh ?

0 votes

Je viens de mettre à jour ma réponse. Les paramètres Ssh ne sont pas les seuls. user.name et github.user sont également importants.

0 votes

J'ai encore mis à jour ma réponse, avec quelques vérifications supplémentaires de la configuration ssh.

0 votes

Le message "Permission denied (publickey)." signifie en fait que vous avez essayé de vous connecter en utilisant votre clé publique et que l'autorisation vous a été refusée, plutôt que de ne pas être autorisé à accéder à votre clé publique.

96voto

VonC Points 414372

Qu'est-ce que

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

returns (exécuté dans votre dépôt git) ?

Origin est simplement une convention de dénomination par défaut pour faire référence à un dépôt Git distant.

S'il ne fait pas référence à GitHub (mais plutôt à un chemin vers le dépôt de votre coéquipier, chemin qui peut ne plus être valide ou disponible), ajoutez simplement une autre origine, comme dans ceci Entrée de la blogosphère

$ git remote add origin2 git@github.com:myLogin/myProject.git
$ git push origin2 master

(En fait, j'utiliserais le nom "github" plutôt que "origin" ou "origin2").


Permission 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 dépôt Git local, comme indiqué dans le document suivant le guide d'aide GitHub . (à la fois user.name et github.name -- et github.token)

Ensuite, blogue du 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 consistait à créer un fichier de configuration dans ~/.ssh/, comme indiqué à l'adresse suivante en bas de la section OS X de cette page .

Voici le fichier que j'ai ajouté, conformément aux instructions de la page, et mes pousses ont recommencé à fonctionner :

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

Vous pouvez également afficher le résultat de

ssh -v git@github.com

pour avoir plus d'informations sur la raison pour laquelle la connexion ssh de 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>== tek...@gmail.com 

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

Vérifiez également l'url utilisée lors de la poussée ( git@github.com/... pas git://github.com/... )

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

Essayez ça :

 $ ssh -i path/to/public/key git@github.com

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

1 votes

Dommage que je ne puisse pas voter plus d'une fois ! J'ai eu ce problème deux fois en deux semaines et après avoir cherché sur Google à chaque fois, j'ai trouvé ce post SO. MERCI ! :)

1 votes

Je me débattais avec cela - j'avais changé toute la configuration de git, mais ssh-add était l'étape qui me manquait - merci beaucoup !

0 votes

Ce n'était qu'une petite suggestion dans le contexte de cette excellente réponse, mais j'aime beaucoup l'idée de renommer "Origin" en "GitHub" (ou nom de serveur), cela aide vraiment à conceptualiser l'endroit où l'on envoie les choses.

28voto

Sarah Mei Points 10673

C'est un problème avec votre télécommande. Quand vous faites git push origin master , origin est la télécommande et master est la branche que tu pousses.

Quand tu fais ça :

git remote

Je parie que la liste n'inclut pas origin . Pour ré-adhérer l'origine à distance :

git remote add origin git@github.com:your_github_username/your_github_app.git

Ou, s'il existe mais est formaté de manière incorrecte :

git remote rm origin
git remote add origin git@github.com:your_github_username/your_github_app.git

10voto

johnnygoodman Points 343

La réponse de VonC est la meilleure, mais la partie qui a fonctionné pour moi était super simple et est un peu 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 tutoriel "getting started with rails" et vous n'aviez PAS configuré vos clés SSH publiques/privées.

Si c'est le cas, essayez ceci :

  1. $>cd ~/.ssh

  2. $>ls

  3. Si la sortie de ls est known_hosts et rien d'autre, visiter : 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é.

0 votes

Je cherchais justement cette page. Merci beaucoup ! =D

0 votes

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é bloqué à la section 1.3.4 lorsque j'ai eu besoin de faire une git push origin master. C'était la première fois que je configurais Git et Rails. J'espère que cela a aidé d'autres personnes.

4voto

ken Points 489

J'ai le même problème et je pense que le pare-feu bloque le protocole git. Finalement, j'ai dû me résoudre à utiliser https:// pour récupérer et pousser. Cependant, cela demandera toujours à l'utilisateur d'entrer le mot de passe...

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

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

si ce qui précède 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

1 votes

Vous pouvez utiliser le ~/.netrc Le fichier stocke 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 consulter les spécificités de son utilisation.

1 votes

@Arrowmaster : notez que si vous êtes sous Windows, vous devez utiliser ~/_netrc (' _ et non pas . ')

0 votes

Merci pour les commentaires, je vais essayer !

1voto

Aaron Points 574

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

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

1 votes

J'ai ajouté ma clé publique à mon compte github. -- Le problème a commencé après que j'ai ajouté une branche distante à mon Git.

1 votes

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X