2013-08-19 6 views
11

Ich arbeite mit einem Team und wir machen Feature-Zweige und Pull-Anfragen.Pull-Anfrage auf github - zeigt Commits rebased vom Master

Ich habe einen Zweig erstellt, daran ein wenig gearbeitet und dabei auch wenig Arbeit am Master gemacht.

Dann habe ich den Zweig gegen Master rebased. Jetzt möchte ich eine Pull-Anfrage machen.

In GitHub zeigt die Pull-Anforderung jedoch alle Commits an, die zwischen der ersten Verzweigung und jetzt - den Commits, die ich in diesem Feature-Zweig gemacht habe, und den Commits, die auf Master dazwischen liegen, aufgetreten sind.

Das ist laut Krempel - mache ich etwas falsch? Ich möchte, dass die Pull-Anfrage nur die Commits anzeigt, die ich gemacht habe, da die anderen Commits bereits sowohl auf Master als auch auf meinem Zweig existieren, kein Unterschied.

Der einzige Vorschlag, den ich sehe, ist, einen anderen Zweig zu machen, der auf den neuesten Upstream-Master- und Cherry-Picking-Commits von meinem Zweig darauf basiert.

Antwort

3

Sie müssen etwas falsch gemacht haben. Als Folge des Rebases sollten Sie nach dem letzten Commit im Master nur die eindeutigen Revisionen haben, und Ihr Zweig sollte für einen Schnellvorlauf bereit sein.

Ich habe jetzt einen schnellen Test gemacht, und natürlich zeigt die Pull-Anfrage nur die eindeutigen Revisionen wie erwartet. Es sollte kein lautes Wirrwarr geben, und keine Notwendigkeit, Kirschen zu pflücken. Es scheint, dass etwas mit deinen Zweigen nicht stimmt.

Versuchen Sie erneut zu rebasen. Wenn Sie früher korrekt rebasiert haben, sollte dies jetzt ein NO-OP sein. Kasse Ihrer Branche, und versuchen Sie es erneut von Master an der Spitze rebase, wie folgt aus:

git checkout yourbranch 
git rebase master 

sollte Current branch will-have-rebased is up to date. Dieser Druck, und nachdem Sie den Zweig zu GitHub schieben, sollten Sie in der Lage sein, eine Pull-Anforderung zu erstellen, in dem nur die eindeutige Commits werden angezeigt. Ich verstehe nicht warum nicht.

Wichtig: bedenken, dass, wenn Sie Ihre Niederlassung vor Rebasieren geschoben hatte, dann wird Git wieder nach Rebasieren schieben verweigern. Dies liegt daran, dass Sie im Allgemeinen die Geschichte der öffentlichen Zweige nicht umschreiben sollten, und alle Anleitungen zur Umbasierung erklären diesen Punkt. Wenn Sie den Zweig trotzdem verschieben und seinen Verlauf auf GitHub umschreiben möchten, fügen Sie das Flag --force hinzu.

+1

Das funktioniert wie angegeben, aber dann kann ich den Zweig nicht drücken. Die Antwort ist, weil ich schon einmal gedrängt hatte. –

+0

@HsiuDai Sie können nicht wieder drücken, weil es nichts zu schieben gibt oder weil Git sich weigert, die Geschichte des Zweiges neu zu schreiben? Können Sie die URL Ihres Repos und den Namen der Filiale posten? – janos

+0

Private Repo Ich fürchte, kann es nicht geben. Aber weil git sich weigert, die Geschichte neu zu schreiben, sind die SHAs nach der Rebase jetzt alle anders. –

8

Ich habe das gleiche Problem haben:

Wenn wir foo Zweig, verzweigte aus master, die bereits in origin geschoben wird, und auf beiden Zweige wurden Änderungen vorgenommen, dann nach dem Zusammenführen/Rebasieren Ich war immer Änderungen von master in Pull Request Diff.

Ich löste es durch git fetch erste Ausführung meiner lokalen master Zweig zu aktualisieren, lokale Niederlassung zu foo ändern und dann die Ausführung von Befehlen:

git rebase master

git push -f origin foo:foo

Diese Fern Zweig zwingt und dann PRs diff enthält nur die richtigen Änderungen, genau wie die Verzweigung basierend auf dem letzten master erstellt würde.

+0

Ich bekomme "alles auf dem neuesten Stand" nichts ändert sich – feresr

+0

Haben Sie zuerst von "Ursprung/Master" gezogen? Haben Sie Gewalt angewendet, wenn Sie 'foo' auf die Fernbedienung gedrückt haben? –

+0

Ich glaube, ich habe vergessen, Push zu erzwingen, ich löste es, indem ich den 'Basis'-Zweig in meinem PR in einen anderen Zweig als Master änderte und ihn dann wieder änderte – feresr

Verwandte Themen