Zusammenführen von Pull-Requests

Lesezeit: 4 Minuten

Jemand hat eine Reihe von Pull-Requests an mein Repository auf Github gesendet. Leider haben sie dies in mehreren Pull-Anforderungen (eine für jede Datei) getan, anstatt alle Pull-Anforderungen für alle Dateien auf einmal zu übermitteln.

Nachdem ich ihn gebeten habe, sie zu einer Einheit zusammenzuführen – und keine Antwort erhalten habe, versuche ich nun, diese Pull-Anforderungen selbst in der Git Bash zusammenzuführen – aber mit wenig Glück – bin ich ziemlich glücklich, die Merge-Schaltflächen zu verwenden und Commits durch die zu machen GitHub-Programm unter Windows, aber wenig mehr. Ich habe kein wirkliches Verständnis für die Git-Shell. Wenn also jemand den Prozess durchgehen könnte, wie ich diese Pull-Anforderungen zusammenführen kann (keine von ihnen widerspricht sich sowieso), wäre ich sehr dankbar.

Angenommen, Sie haben 3 Pull-Anforderungen A, B, C, die sich auf drei Zweigen bA, bB, bC befinden. und Ihr Hauptzweig ist master.

Holen Sie zuerst alle seine Zweige in Ihr lokales Repo, ohne es zusammenzuführen.
git fetch his-repo

Ihr Repo kann also jetzt vier Zweige haben: master, bA, bB, bC

Ich werde eine Verzweigung vom Master namens erstellen f-merge-his-repo

git checkout master

Dadurch wird sichergestellt, dass f-merge-his-repo von master abzweigt.

git checkout -b f-merge-his-repo

Dadurch wird der Zweig f-merge-his-repo erstellt und dorthin gewechselt.

Jetzt sind Sie also gerade auf f-merge-his-repo, verwenden Sie die folgenden Befehle:

git merge bA

git merge bB

git merge bC

Wenn es Konflikte gibt, sollten Sie es beheben (manuell oder mit einem Mergetool), aber wie Sie sagten, gibt es keine Konflikte, also sagen wir das bA bB and bC sind jetzt alle drin f-merge-his-repo

dann einfach zusammenführen f-merge-his-repo in Ihren Master-Zweig

Wechseln Sie zunächst in den Master-Branch.
git checkout master

Und dann f-merge-his-repo zusammenführen
git merge f-merge-his-repo

oder wenn Sie eine Zusammenführung ohne schnellen Vorlauf bevorzugen
git merge --no-ff f-merge-his-repo

Löschen Sie diese Zweige schließlich.

git branch -d bA

git branch -d bB

git branch -d bC

git branch -d f-merge-his-repo

Sollte man sich wirklich anschauen pro-git hier. Es ist ein einfaches Buch, das Ihnen alles zeigt, was Sie mit Git in Ihrer täglichen Arbeit brauchen, und glauben Sie mir, sobald Sie sich an Git Bash gewöhnt haben, werden Sie alle diese Git-GUIs frustriert finden (außer das Ansehen des Protokolls, ich benutze Git zum Ansehen und analysieren Sie das Protokoll)

Letzter Tipp:

Eine gute Möglichkeit, sich zu erinnern git merge und git rebase ist wie

Merge führt einen anderen Zweig zusammen ZU Ihren aktuellen Zweig (natürlich können Sie beide Zweige benennen, aber die Standardsyntax ist, den Zweig mit Ihrem aktuellen Zweig zusammenzuführen)

Sie sollten also immer zum Hauptzweig wechseln und andere Zweige zusammenführen

git checkout master

git merge their-branch --no-ff

oder
git merge their-branch

Und Rebase rebasiert Ihren aktuellen Zweig AN eine andere Filiale (normalerweise die Hauptfiliale)

git checkout feature-branch

git rebase master

  • Ich kann das erst ausprobieren, wenn ich heute Abend von der Arbeit nach Hause komme – aber sieht nach einer großartigen Antwort aus !! Vielen Dank.

    – Georg Wilson

    18. Januar 2013 um 9:42 Uhr

  • richtig OK, ich kann keine Zweige finden, die er gemacht hat. Die einzige Vermutung, die ich habe, ist, dass er jede Datei einzeln bearbeitet haben muss, um die Pull-Anforderungen zu erstellen – anstatt Verzweigungen vorzunehmen. Ich habe versucht, die Commits basierend auf mehr Recherchen, die ich gemacht habe, und auch nachdem ich dieses Buch durchgesehen habe, herauszupicken – und alles, was ich bekomme, ist fatal: bad object xxxxx wo xxxxx ist die Commit-Nummer. Irgendwelche Ideen, außer alles manuell zu erledigen?

    – Georg Wilson

    18. Januar 2013 um 19:19 Uhr


  • Meinen Sie, er hat zuerst ac geändert und einen Pull-Request erstellt, und dann hat er basierend auf dieser Version bc geändert und einen weiteren Pull-Request erstellt?

    – shengy

    19. Januar 2013 um 15:45 Uhr

  • Nein, ich meine, er hat 4 einzelne Dateien bearbeitet. Anstatt eine Pull-Anforderung zu erstellen. Oder zumindest kann ich keinen Zweig finden, in dem er versucht hat, ihn zusammenzuführen. Es sind diese 4 Pull-Anforderungen hier, wenn das hilfreich ist github.com/wilsonge/shoutbox/pulls . Ich möchte sie alle akzeptieren – aber in einer Zusammenführung – damit ich sie bei Bedarf alle auf einmal widerrufen kann / ein vollständigeres Protokoll habe usw.

    – Georg Wilson

    19. Januar 2013 um 19:02 Uhr


  • Tut mir leid, dass ich Ihnen nicht wirklich geholfen habe, aber ich empfehle Ihnen DRINGEND, etwa einen halben Tag damit zu verbringen und es durchzulesen pro-gitdanach weißt du alles, was du für deine tägliche Arbeit mit git(bash) benötigst.

    – shengy

    25. Januar 2013 um 5:35 Uhr

1014400cookie-checkZusammenführen von Pull-Requests

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

Privacy policy