So führen Sie eine Pull-Anforderung zusammen, ohne einen Merge-Commit im Git-Verlauf zu erhalten
Lesezeit: 2 Minuten
Achraf JEDAY
Auf Github erhalte ich jedes Mal, wenn ich eine Pull-Anfrage in meinen Basis-Zweig zusammenführe, einen zusätzlichen Zusammenführungs-Commit:
Pull-Request #77 zusammenführen …
Ich ziehe es vor, einen Git-Verlauf ohne diese Merge-Commits zu erhalten.
Wie kann ich das erreichen?
git merge --squash
– kruczek
12. Mai 2017 um 12:34 Uhr
Dadurch werden alle Commits zu einem kombiniert.
– Achraf JEDAY
12. Mai 2017 um 12:40 Uhr
Jop richtig, und dann wendet es den Squash-Commit als einzelnen Commit auf Ihren HEAD an, ohne eine übergeordnete Beziehung zum Zweig „Pull Request“ zu erstellen. Sehen hier
– ckruczek
12. Mai 2017 um 12:43 Uhr
Führen Sie eine Rebase anstelle einer Zusammenführung durch, wobei Sie optional auch die Commits quetschen, aber die meiste Zeit nicht wirklich notwendig sind. Dadurch werden die gleichen Commits über Ihrem aktuellen Zweigtipp verschoben und erneut angewendet und der Merge-Commit wird vermieden. Allerdings haben Sie jetzt den Verlauf umgeschrieben, sodass derjenige, dem das Repository gehört, aus dem die Pull-Anforderung stammt, am besten sein Repository gemäß Ihrer Umschreibung aktualisiert, oder Sie erhalten später eine ähnliche Pull-Anforderung mit denselben Commits.
– Lasse V. Karlsen
12. Mai 2017 um 13:10 Uhr
@LasseV.Karlsen Ich benutze den PR-Zweig normalerweise nicht mehr, nachdem ich den PR zusammengeführt habe, also ist es kein Problem für mich.
– Achraf JEDAY
12. Mai 2017 um 14:30 Uhr
Um einen Git-Verlauf ohne Pull-Request-Merge-Commits zu erhalten, kann ich die Merge-Schaltfläche (Pull-Request-Seite) verwenden und eine Rebase und Merge durchführen:
Das Problem ist, dass ‘Squash and merge’ und ‘Rebase and merge’ beide das gpg-Zeichen verlieren
– XQ Kuang
25. Dezember 2019 um 8:09 Uhr
Gibt es eine Möglichkeit zu verhindern, dass GH währenddessen neue Commits (mit neuen Hashes) generiert, wenn der Quellzweig auf dem Zielzweig basiert?
– Frxx
20. Juni um 23:38 Uhr
Markus Adelsberger
Hier sind Ihre Optionen:
Quetschen
Rebase
Verschmelzen
Ein Squash führt zu einem einzigen neuen Commit, das alle Änderungen an der Spitze des Hauptzweigs darstellt. Es ist ein Spezialfall von Rebase.
Ein Rebase führt zu einem oder mehreren neuen Commits (von denen sich einige oder alle in einem “kaputten”/nicht erstellbaren Zustand befinden können) am Kopf des Hauptzweigs.
Ein Merge erstellt einen Merge-Commit und hinterlässt den Verlauf so, wie er wirklich passiert ist.
git merge --squash
– kruczek
12. Mai 2017 um 12:34 Uhr
Dadurch werden alle Commits zu einem kombiniert.
– Achraf JEDAY
12. Mai 2017 um 12:40 Uhr
Jop richtig, und dann wendet es den Squash-Commit als einzelnen Commit auf Ihren HEAD an, ohne eine übergeordnete Beziehung zum Zweig „Pull Request“ zu erstellen. Sehen hier
– ckruczek
12. Mai 2017 um 12:43 Uhr
Führen Sie eine Rebase anstelle einer Zusammenführung durch, wobei Sie optional auch die Commits quetschen, aber die meiste Zeit nicht wirklich notwendig sind. Dadurch werden die gleichen Commits über Ihrem aktuellen Zweigtipp verschoben und erneut angewendet und der Merge-Commit wird vermieden. Allerdings haben Sie jetzt den Verlauf umgeschrieben, sodass derjenige, dem das Repository gehört, aus dem die Pull-Anforderung stammt, am besten sein Repository gemäß Ihrer Umschreibung aktualisiert, oder Sie erhalten später eine ähnliche Pull-Anforderung mit denselben Commits.
– Lasse V. Karlsen
12. Mai 2017 um 13:10 Uhr
@LasseV.Karlsen Ich benutze den PR-Zweig normalerweise nicht mehr, nachdem ich den PR zusammengeführt habe, also ist es kein Problem für mich.
– Achraf JEDAY
12. Mai 2017 um 14:30 Uhr