Ich habe an einem Feature Zweig für ein paar Tage gearbeitet und es ist jetzt bereit, in dev
zu verschmelzen. Während der Arbeit an dieser Funktion habe ich mit dev
verschmolzen, um einen Patch zu erhalten. Meine Geschichte sieht wie folgt aus:Wie komprimiere ich Commits, wenn ich mit Dev dazwischen fusioniert bin?
* E (feature1)
* D:merge with dev
| \
* C * B:patch (dev)
\ |
* A
Ich mag würde die gesamte Branche in einem Squash commit, fusionieren mit dev
und dann vorspulen dev
. Das Problem ist, E
kann nicht mit C
gequetscht werden, wie die Zusammenführung zwischen ihnen kommt. Die einzige Option scheint Squash E
, B
und C
zu sein (rufen Sie das neue Commit F
auf). In diesem Fall enthält das gequetschte Commit auch Änderungen, die Teil eines irrelevanten Patches waren. Nach der Zusammenführung zu dev
gibt es zwei Commits, die den Patch anwenden: F
(der den Patch anwendet und die Funktion hinzufügt) und B
(der nur den Patch anwendet). Außerdem wird F
jetzt zwei unveränderte Änderungen vornehmen.
Gibt es einen Ausweg, der meine Geschichte schön und sauber hält? Muss ich meinen Workflow ändern?
Empfohlene Workflow-Änderung: niemals fusionieren dev. Stattdessen Rebase darauf. Sie sollten das beheben können, indem Sie einfach eine Rebase auf "dev" machen. – o11c
Vereinbarte (beide). Werde es versuchen – lfk
@ o11c - Rebasing ändert Ihre Branche Geschichte. Während ich zufällig ein Fan bin, kann es manchmal ein bisschen gefährlich sein, besonders wenn du nicht weißt, was du tust. Außerdem wird das Rebasieren bei Konflikten sehr ärgerlich, da Konflikte bei jedem Rebase-Vorgang neu aufgelöst werden müssen. Bei einer Zusammenführung können Sie die Konflikte einmal beheben und dann weitermachen. – JDB