Ok, ich habe eine möglicherweise einzigartige Situation
Ich habe zwei Repositorys in verschiedenen Organisationen (B ist kein Fork von A, sondern ein Klon), aber beide auf GitHub. Bei dem einen bin ich Administrator (B), beim anderen bin ich ein Mitarbeiter mit nur Lesezugriff (A).
Um es klar zu sagen, ich bin weder Eigentümer noch kann ich stattdessen löschen und forken.
Ich muss eine Pull-Anforderung von Repository B an Repository A senden. Ist das überhaupt möglich? Wenn das so ist, wie!
Basierend auf den Klarstellungen in den Kommentaren ist hier eine vollständige Lösung, die für Sie funktionieren sollte:
Schritt 1. Gehen Sie zu GitHub und verzweigen Sie A, um A-Fork zu erstellen.
Schritt 2. Klonen Sie Ihren Fork:
git clone <URL for A-fork>
Schritt 3. Fügen Sie B als zweite Remote derselben Sandbox hinzu und checken Sie den Zweig aus, den Sie als Pull Request einreichen müssen – ich nenne es branch-for-PR
:
git remote add B <URL for B>
git fetch B
git checkout branch-for-PR
Schritt 3 b. Ob branch-for-PR
bereits auf A-Fork existiert, müssen Sie den Status dieses Zweigs von B zusammenführen:
git merge B/branch-for-PR
Schritt 4. Drücken Sie die branch-for-PR
zu A-Gabel, das ist origin
denn das ist, was Sie in Schritt 2 geklont haben:
git push origin branch-for-PR
Schritt 5. Gehen Sie zu A-fork auf GitHub und erstellen Sie eine Pull-Anforderung von branch-for-PR
. Dadurch werden die Administratoren von A wie üblich benachrichtigt.
Dies würde unabhängig davon funktionieren, wo B gehostet wurde, auf einem privaten Git-Repo oder unter einem anderen GitHub-Benutzer. Alles, was Sie brauchen, ist, sich von derselben Sandbox aus mit beiden verbinden zu können.
Ja. Solange sie genügend Verlauf (Commits) teilen, gibt es kein Problem.
- Gehen Sie in das B-Verzeichnis und fügen Sie A als Remote hinzu (
git remote add repoA $GIT_REPO_URL
).
git fetch repoA
- Fahren Sie genauso fort, wie Sie es tun würden, wenn das eine eine Gabelung des anderen wäre
Sind A und B auf verschiedenen Servern oder nur unter verschiedenen Eigentümern auf demselben Github-Server? Ich würde dies angehen, indem ich einen eigenen Fork von A erstelle und A-fork + B als zwei Remotes in derselben Sandbox habe, um die B-Änderungen zu A-fork zu pushen und dann eine PR von A-fork zu A zu machen. Aber du sagen, du kannst nicht forken, warum ist das überhaupt so?
– Johannis
17. Juli 2019 um 18:15 Uhr
@joanis Ich besitze weder die Organisation von a oder b noch das Repo selbst. Repo b Ich bin Administrator mit Schreibzugriff, Repo AI hat nur Lesezugriff
– unixandria
17. Juli 2019 um 18:38 Uhr
Aber sind sie auf dem gleichen Server oder nicht? Wenn nicht, und wenn Sie nicht von A forken können, sehe ich nicht, wie Sie möglicherweise einen PR für A durchführen könnten … PRs sind keine eigentliche Git-Sache, sie sind eine Server-Software-Sache, also müssen sie es tun vom Zielserver unterstützt werden.
– Johannis
17. Juli 2019 um 18:54 Uhr
@joanis es ist GitHub
– unixandria
17. Juli 2019 um 19:23 Uhr
Wenn es sich um GitHub handelt, verzweigen Sie einfach A: Sobald Sie Lesezugriff auf ein Repo haben, sollten Sie in der Lage sein, es zu verzweigen, Ihre Änderungen an Ihren Fork zu pushen und dort die Pull-Anforderung zu erstellen. Sie müssen kein Eigentümer oder Administrator sein, um zu forken, Lesezugriff reicht aus.
– Johannis
17. Juli 2019 um 22:29 Uhr