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 [email protected]: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 [email protected]: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 [email protected]: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 = [email protected]: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 = [email protected]: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 = [email protected]: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://[email protected]/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 [email protected]
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 [email protected]: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 [email protected]: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 [email protected]:my_user_name/my_repo.git master