Frage Wie kann ich von einem Klon des ursprünglichen Repos auf meine Gabelung drücken?


Ich habe eine Gabelung (nennen wir es) erstellt myrepo) eines anderen Repositories (nennen wir es orirepo) auf GitHub. Später habe ich geklont orirepo.

git clone https://github.com/original/orirepo.git

Ich habe ungefähr 20 Dateien geändert, dann habe ich meine Änderung inszeniert und einen Commit gemacht

git add
git commit

Allerdings, als ich versuchte zu schieben

git push

Ich habe diesen Fehler:

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

Ich weiß, dass ich einen Fehler gemacht habe: Ich hätte eher meine Gabel klonen sollen orirepo, aber dafür ist es jetzt zu spät. Wie könnte ich zu meiner Gabel drücken anstatt zu origin/orirepo, auf die ich keinen Schreibzugriff habe?


75
2017-08-28 09:42


Ursprung


Antworten:


Standardmäßig, wenn Sie ein Repository klonen

  • das wohnt bei https://github.com/original/orirepo.git,
  • wessen aktueller Zweig wird aufgerufen master,

dann

  • Die lokale Konfiguration des resultierenden Klons listet nur einen Remoteaufruf auf origin, die der URL des geklonten Repositorys zugeordnet ist;
  • die lokale master Zweig in Ihrem Klon ist festgelegt auf Spur  origin/master.

Wenn Sie also die Konfiguration Ihres Klons nicht ändern, interpretiert Git

git push

wie

git push origin master:origin/master

Mit anderen Worten, git push Versuche, dein Einheimisches zu drücken master verzweigen in die master Zweig, der sich auf dem Remote - Repository befindet (von Ihrem Klon als origin). Sie dürfen dies jedoch nicht tun, da Sie keinen Schreibzugriff auf dieses Remote-Repository haben.

Du brauchst

  1. entweder neu definieren origin Fernbedienung, um mit Ihrer Gabel verbunden zu werden, indem Sie laufen

    git remote set-url origin https://github.com/RemiB/myrepo.git
    
  2. oder, wenn Sie die ursprüngliche Definition der origin Remote, definieren Sie eine neue Fernbedienung (genannt myrepo(hier), die mit deiner Gabel verknüpft sind:

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

    Dann sollten Sie in der Lage sein, Ihre lokalen zu drücken master verzweigen Sie zu Ihrer Gabel, indem Sie laufen

    git push myrepo master
    

    Und wenn du Git das sagen willst git push sollte zu drücken myrepo Anstatt von origin Von nun an solltest du laufen

    git push -u myrepo master
    

stattdessen.


110
2017-08-28 10:11



Also hast du geklont, dass irgendjemandes Repo die Änderungen vorgenommen hat, und dann wurde dir klar, dass du nicht zu diesem Repo vorstoßen kannst, aber du kannst zu deiner eigenen Verzweigung stoßen. Also gingst du weiter und gabst dem ursprünglichen Repo nach.

Alles, was Sie tun müssen, ist, die Ursprungs-URL in Ihrem lokalen Klon mit der URL Ihres gegabelten Repos zu tauschen.

Mach es so

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

Woher https://github.com/fork/name.git ist die URL Ihrer Gabel aus dem ursprünglichen Repo.

Danach, einfach

git push

und du kannst deine Änderungen an deine Gabel weitergeben :)


7
2017-09-17 15:46



Okay, ich habe meine git config Datei endlich bearbeitet:

$ nano .git/config

Ändern :

[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

zu

[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

Dann,

$ git push

Lief wie am Schnürchen.

Oder, dank Thiago F Macedo Antwort :

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

4
2017-08-28 10:11



Sie sollten das gegabelte Repo zunächst in Ihrem Konto klonen.

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

Sie haben absolut die Berechtigung, zu diesem Repo zu gelangen. Wenn Sie Ihren Code auf den ursprünglichen Repo-Code übertragen möchten, können Sie eine Pull-Anforderung ausführen.


-4
2017-08-12 20:36