web-dev-qa-db-fra.com

Git/GitHub ne peut pas pousser à maîtriser

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
145
kapso

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.

239
Mark Longair

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.

37
Abdo

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.)

13
Purplejacket

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
2
ParamQuery

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
1
user133408

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.

1
Cerin

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!

0
CambridgeMike

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
0
rshdev

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

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