Git / GitHub ne peut pas pousser pour maîsortingser

Je suis nouveau sur Git / GitHub et j’ai rencontré un problème. J’ai créé un projet de test et l’ai ajouté au référentiel local. J’essaie maintenant d’append des fichiers / projets au référentiel distant.

Voici ce que j’ai fait (et cela a fonctionné) –

git remote add origin git://github.com/my_user_name/my_repo.git 

Maintenant, quand j’essaye de pousser le repository vers GitHub, en utilisant la commande suivante, j’obtiens l’erreur suivante –

 git push origin master 

Erreur –

 fatal: remote error: You can't push to git://github.com/my_user_name/my_repo.git Use git@github.com:my_user_name/my_repo.git 

GitHub ne prend pas en charge le protocole Git, ce qui est indiqué par l’utilisation de l’URL commençant par git:// . Comme l’indique le message d’erreur, si vous voulez pousser, vous devez utiliser l’URL SSH git@github.com:my_user_name/my_repo.git ou le protocole “intelligent HTTP” en utilisant l’URL https:// que GitHub vous indique. votre référentiel

(Mise à jour: à ma grande surprise, certaines personnes ont apparemment pensé que “https” signifie “HTTP intelligent”, ce que je n’étais pas. Git avait un protocole “HTTP stupide” qui ne permettait pas de pousser avant le “HTTP intelligent” utilisé par GitHub a été introduit – soit peut être utilisé sur http ou https . Les différences entre les protocoles de transfert utilisés par Git sont expliquées dans le lien ci-dessous.)

Si vous voulez changer l’URL d’origine, vous pouvez simplement faire:

 git remote set-url origin git@github.com:my_user_name/my_repo.git 

ou

 git remote set-url origin https://github.com/my_user_name/my_repo.git 

Plus d’informations sont disponibles dans 10.6 Git Internals – Protocoles de transfert .

Utilisez la réponse de Mark Longair , mais assurez-vous d’utiliser le lien HTTPS vers le référentiel:

 git remote set-url origin https://github.com/my_user_name/my_repo.git 

Vous pouvez utiliser alors le git push origin master .

La solution de Mark Longair utilisant git remote set-url... est assez claire. Vous pouvez également obtenir le même comportement en éditant directement cette section du fichier .git / config:

avant:

 [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = git://github.com/my_user_name/my_repo.git 

après:

 [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = git@github.com:my_user_name/my_repo.git 

(Et inversement, l’invocation de git remote set-url... produit le changement ci-dessus.)

Il y a une solution simple à cela pour une nouvelle personne:

Editez le fichier de configuration dans votre répertoire local .git ( config ). Changer git: en https: ci https: dessous.

 [remote "origin"] url = https://github.com/your_username/your_repo 

J’ai eu ce problème après la mise à niveau du client Git , et soudainement mon repository n’a pas pu pousser.

J’ai trouvé que certaines anciennes télécommandes avaient une mauvaise valeur d’ url , même avec ma télécommande actuellement active qui avait la même valeur pour url et fonctionnait correctement.

Mais il y avait aussi le pushurl , donc l’ajout pour l’ancienne télécommande a fonctionné pour moi:

Avant:

 [remote "origin"] url = git://github.com/user/repo.git fetch = +refs/heads/*:refs/remotes/origin/* pushurl = git@github.com:user/repo.git 

REMARQUE: cette partie du fichier “config” était inutilisée depuis longtemps, mais le nouveau client se plaignait de l’URL incorrecte:

 [remote "composer"] url = git://github.com/user/repo.git fetch = +refs/heads/*:refs/remotes/composer/* 

J’ai donc ajouté le pushurl à l’ancienne télécommande:

 [remote "composer"] url = git://github.com/user/repo.git fetch = +refs/heads/*:refs/remotes/composer/* pushurl = git@github.com:user/repo.git 

Cette erreur se produit lorsque vous clonez un repository en utilisant un appel comme:

 git clone git://github.com/....git 

Cela vous définit essentiellement comme un utilisateur à tirer uniquement, qui ne peut pas augmenter les changements.

J’ai résolu ce .git/config en .git/config fichier .git/config de .git/config repository et en changeant la ligne:

 [remote "origin"] url = git://github.com/myusername/myrepo.git 

à:

 [remote "origin"] url = ssh+git://git@github.com/myusername/myrepo.git 

Ce protocole ssh+git avec l’utilisateur git est le mécanisme d’authentification préféré par Github.

Les autres réponses mentionnées ici fonctionnent techniquement, mais elles semblent toutes contourner ssh, vous obligeant à entrer manuellement un mot de passe, ce que vous ne voulez probablement pas.

Si vous allez sur http://github.com/my_user_name/my_repo, vous verrez une zone de texte où vous pouvez sélectionner le chemin d’access à votre repository. Vous voudrez l’utiliser!

J’ai ajouté ma pubkey à github.com et cela a été un succès:

 ssh -T git@github.com 

Mais j’ai reçu l’erreur “Vous ne pouvez pas pousser” après avoir mal fait ceci:

 git clone git://github.com/mygithubacct/dotfiles.git git remote add origin git@github.com:mygithubacct/dotfiles.git ...edit/add/commit git push origin master 

Au lieu de faire ce que j’aurais dû faire:

 mkdir dotfiles cd dotfiles git init git remote add origin git@github.com:mygithubacct/dotfiles.git git pull origin master ...edit/add/commit git push origin master 

Pour définir https globalement au lieu de git:// :

 git config --global url.https://github.com/.insteadOf git://github.com/ 

Le moyen le plus rapide de le surmonter est de remplacer l’ origin par la suggestion qu’il donne.

Au lieu de git push origin master , utilisez:

 git push git@github.com:my_user_name/my_repo.git master