Je suis nouveau dans 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'ajouter des fichiers/projet 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 dépôt 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 la transmission via le protocole Git, ce qui est indiqué par votre utilisation de l'URL commençant par git://
. Comme le message d'erreur l'indique, si vous souhaitez diffuser, vous devez utiliser l'URL SSH [email protected]:my_user_name/my_repo.git
ou le protocole "smart HTTP" en utilisant l'URL https://
que GitHub vous indique pour votre référentiel.
(Mise à jour: à ma grande surprise, certaines personnes pensaient apparemment que je voulais dire par là que "https" signifie "HTTP intelligent", ce que je n'étais pas. Git utilisait un protocole "stupide HTTP" qui ne permettre de pousser avant que le "HTTP intelligent" utilisé par GitHub ait été introduit - il pourrait soit être utilisé avec 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 - Transfer Protocols.
Utilisez Mark Longair's answer , 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 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 modifiant 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 git remote set-url...
produit le changement ci-dessus.)
Il y a une solution simple à ceci pour quelqu'un de nouveau à ceci:
Editez le fichier de configuration dans votre répertoire local .git (config
). Remplacez git:
par https:
ci-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 tout à coup, mon référentiel n'a plus pu pousser.
J'ai constaté qu'une ancienne télécommande avait la mauvaise valeur url
, même si ma télécommande actuellement active avait la même valeur pour url
et fonctionnait correctement.
Mais il y avait aussi le paramètre pushurl
, donc l'ajouter 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
NOTE: Cette partie du fichier "config" était inutilisée depuis des lustres, mais le nouveau client s'est plaint de la mauvaise URL:
[remote "composer"]
url = git://github.com/user/repo.git
fetch = +refs/heads/*:refs/remotes/composer/*
J'ai donc ajouté le paramètre 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 référentiel à l'aide d'un appel tel que:
git clone git://github.com/....git
Cela vous définit essentiellement comme un utilisateur actif, qui ne peut pas modifier les modifications.
J'ai résolu ce problème en ouvrant le fichier .git/config
de mon référentiel et en modifiant 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 dans laquelle vous pourrez sélectionner le chemin git de votre dépôt Vous aurez envie de l'utiliser!
J'ai ajouté mon 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/