Git-Pull-Anforderung von verschiedenen Repos in verschiedenen Organisationen

Lesezeit: 3 Minuten

Benutzer-Avatar
unixandria

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!

  • 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

Benutzer-Avatar
Johannis

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.

  • Jeder Git-Push führt jedoch dazu, dass der Zugriff verweigert wird … zumindest jeder, den ich versucht habe ….

    – unixandria

    18. Juli 2019 um 2:07 Uhr

  • Oh warte ein-Gabel nvm

    – unixandria

    18. Juli 2019 um 2:07 Uhr

  • Wenn Sie einen Fork erstellen, besitzen Sie diesen Fork, Sie sollten Schreibzugriff darauf haben. Stellen Sie sicher, dass Sie die richtigen Anmeldeinformationen zum Pushen verwenden.

    – Johannis

    18. Juli 2019 um 2:08 Uhr

  • Es sagt mir, dass alles auf dem neuesten Stand ist, wenn ich zu einem Fork pushe, wenn es 5 Commit hinterher sein sollte

    – unixandria

    18. Juli 2019 um 2:14 Uhr

  • Tat branch-for-PR existieren auf A schon einmal?

    – Johannis

    18. Juli 2019 um 2:16 Uhr

Ja. Solange sie genügend Verlauf (Commits) teilen, gibt es kein Problem.

  1. Gehen Sie in das B-Verzeichnis und fügen Sie A als Remote hinzu (git remote add repoA $GIT_REPO_URL).
  2. git fetch repoA
  3. Fahren Sie genauso fort, wie Sie es tun würden, wenn das eine eine Gabelung des anderen wäre

1014500cookie-checkGit-Pull-Anforderung von verschiedenen Repos in verschiedenen Organisationen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy