Comment puis-je pousser ma fourchette à partir d’un clone du repo original?

J’ai créé un fork (appelons-le myrepo ) d’un autre repository (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 mon changement et fait un commit

 git add git commit 

Cependant, quand j’ai essayé de pousser

 git push 

J’ai 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 mon fourchette plutôt que orirepo , mais il est trop tard pour ça maintenant. Comment pourrais-je pousser vers mon fork plutôt que vers origin/orirepo , auquel je n’ai pas access en écriture?

Par défaut, lorsque vous clonez un référentiel

  • qui réside à https://github.com/original/orirepo.git ,
  • dont la twig actuelle s’appelle master ,

puis

  • la configuration locale du clone résultant répertorie une seule origin appelée distante, associée à l’URL du référentiel que vous avez cloné;
  • la twig master locale de votre clone est définie pour suivre l’ origin/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 twig master locale vers la twig principale qui réside sur le référentiel distant (connu comme origin par votre clone). Cependant, vous n’êtes pas autorisé à le faire, car vous n’avez pas access en écriture à ce référentiel distant.

Tu dois

  1. soit redéfinir l’ origin distante à associer à votre fourche, en exécutant

     git remote set-url origin https://github.com/RemiB/myrepo.git 
  2. ou, si vous souhaitez conserver la définition d’ origin télécommande d’ origin , définissez une nouvelle télécommande (appelée ici myrepo ) associée à votre fork:

     git remote add myrepo https://github.com/RemiB/myrepo.git 

    Ensuite, vous devriez être en mesure de pousser votre twig master locale vers votre fourche en exécutant

     git push myrepo master 

    Et si vous voulez dire à Git que git push devrait pousser à myrepo au lieu d’ origin , vous devriez courir

     git push -u myrepo master 

au lieu.

Donc, vous avez cloné le repo de quelqu’un qui a apporté les modifications, puis vous vous êtes rendu compte que vous ne pouviez pas repousser ce repo, mais vous pouvez pousser à votre propre fourchette. Donc, vous êtes allé de l’avant et fourré le repository initial.

Tout ce que vous avez à faire est d’échanger l’URL d’origine dans votre clone local avec l’URL de votre repo fourchu.

Fais-le comme ça

 git remote set-url origin https://github.com/fork/name.git 

https://github.com/fork/name.git est l’URL de votre fork depuis le repository initial.

Après ça, juste

 git push 

et vous pourrez pousser vos modifications sur votre fourchette 🙂

Ok, 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//.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//.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master 

Alors,

 $ git push 

Travaillé comme un charme.

Ou, grâce à Thiago F Macedo répondre :

 git remote set-url origin https://yourusername@github.com/user/repo.git 

Vous devez d’abord cloner le repo fourchu dans votre compte.

 git clone https://github.com/your_account/repo.git 

Vous avez absolument les permissions nécessaires pour accéder à ce repository. Si vous souhaitez transférer votre code au repository initial, vous pouvez émettre une demande de tirage.