J'ai créé un fork (appelons-le myrepo
) d'un autre référentiel (appelons-le orirepo
) sur GitHub. Plus tard, j'ai cloné orirepo
.
git clone https://github.com/original/orirepo.git
J'ai modifié environ 20 fichiers, puis j'ai mis en scène mes modifications et fait un commit
git add
git commit
Cependant, quand j'ai essayé de pousser
git Push
J'ai eu cette erreur:
remote: Permission to original/orirepo.git denied to mylogin.
fatal: unable to access 'https://github.com/original/orirepo.git/': The requested URL returned error: 403
Je sais que j'ai commis une erreur: j'aurais dû cloner ma fourchette plutôt que orirepo
, mais il est trop tard pour le moment. Comment pourrais-je pousser à ma fourche plutôt que de Origin/orirepo
, auquel je n'ai pas accès en écriture?
Par défaut, lorsque vous clonez un référentiel
https://github.com/original/orirepo.git
,master
,ensuite
Origin
, qui est associée à l'URL du référentiel que vous avez cloné;master
de votre clone est définie sur trackOrigin/master
.Par conséquent, si vous ne modifiez pas la configuration de votre clone, Git interprète
git Push
comme
git Push Origin master:Origin/master
En d'autres termes, git Push
tente de pousser votre branche locale master
vers la branche master
qui se trouve sur le référentiel distant (connu par votre clone sous le nom de Origin
). Cependant, vous n'êtes pas autorisé à le faire, car vous n'avez pas d'accès en écriture à ce référentiel distant.
Tu dois
soit redéfinir la télécommande Origin
à associer à votre fork, en lançant
git remote set-url Origin https://github.com/RemiB/myrepo.git
ou, si vous souhaitez conserver la définition d'origine de la télécommande Origin
, définissez une nouvelle télécommande (appelée myrepo
, ici) associée à votre fork:
git remote add myrepo https://github.com/RemiB/myrepo.git
Ensuite, vous devriez pouvoir pousser votre branche locale master
sur votre fork en lançant
git Push myrepo master
Et si vous voulez dire à Git que git Push
devrait pousser vers myrepo
au lieu de Origin
à partir de maintenant, vous devriez lancer
git Push -u myrepo master
au lieu.
Ainsi, vous avez cloné le repo de quelqu'un qui a apporté les modifications et ensuite réalisé que vous ne pouvez pas accéder à ce dépôt, mais que vous pouvez utiliser ce que vous souhaitez. Alors, vous êtes allé de l'avant et avez inséré le rapport initial.
Il vous suffit d'échanger l'URL d'origine dans votre clone local avec l'URL de votre référentiel forké.
Fais-le comme ça
git remote set-url Origin https://github.com/fork/name.git
Où https://github.com/fork/name.git
est l'URL de votre fork provenant du référentiel d'origine.
Après cela, juste
git Push
et vous pourrez appliquer vos modifications à votre fork :)
D'accord, j'ai finalement édité mon fichier de configuration git:
$ nano .git/config
en changeant :
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "Origin"]
url = https://github.com/<Origin-project>/<Origin-repo>.git
fetch = +refs/heads/*:refs/remotes/Origin/*
[branch "master"]
remote = Origin
merge = refs/heads/master
à
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "Origin"]
url = https://github.com/<mylogin>/<myrepo>.git
fetch = +refs/heads/*:refs/remotes/Origin/*
[branch "master"]
remote = Origin
merge = refs/heads/master
Ensuite,
$ git Push
Travaillé comme un charme.
Ou, grâce à réponse de Thiago F Macedo :
git remote set-url Origin https://[email protected]/user/repo.git