2012-04-03 12 views
4

Mein aktuelles Muster zu merge Thema verzweigt mich in meinen Hauptentwicklungszweig, sobald sie fertig sind. Das Protokoll wurde immer irgendwie verrückt in letzter Zeit zu sehen, und ich erwäge, um Schale rebase statt verwenden.Was sind die Nachteile, wenn es darum geht, Zweigstellen zu refinanzieren, anstatt sie zu verschmelzen?

Was sind die möglichen Nachteile der Verwendung von rebase anstelle von merge für Zweigstellen?

+0

ich gesehen habe fatal auf ‚nicht genügend Arbeitsspeicher‘ ‚git rebase‘. http://stackoverflow.com/questions/6775242/how-can-i-recover-from-fatal-out-of-memory-mmap-failed-cannot-allocate-memor – GoZoner

Antwort

6

Der Hauptnachteil mit rebase ist, dass Sie sollten (Lese müssen) nur lokal rebase verwenden. Das heißt, sobald etwas gedrückt wurde, sollte man es danach nicht mehr umbauen. Die Geschichte neu zu schreiben ist gut und schön, aber in dem Moment, in dem du mit der Geschichte auf einer Fernbedienung herumschwirrst, werden die Dinge wirklich unordentlich.

EDIT

Ein weiterer Nachteil ist die Tatsache, dass die wahre Geschichte in der Tat verloren ist. Das bedeutet unter anderem, dass es unmöglich ist, zurück zum Thema Zweig zu gehen (leicht), da sie das Aussehen des Seins ein Teil des Hauptzweiges haben würden. Es macht auch Änderungen viel schmerzhafter zurückkehrt, weil Sie cherry-pick einer nach dem anderen zu begehen haben, versuchen Sie am besten, welche zu erinnern, aus dem ursprünglichen Thema Zweig kam. Wenn Sie eine interaktive Rebase verwenden, oder noch schlimmer - Ihre Commits niedergedrückt haben - dann könnte das enorme Kopfschmerzen bereiten.

+0

Guter Punkt, danke – Eric

+0

Wäre ein weiterer Nachteil Sei es, dass es schwierig wird, ein Thema aus dem Hauptzweig zu entfernen? Wenn ja, würde es Ihnen etwas ausmachen, das zu Ihrer Antwort hinzuzufügen? – Eric

+0

@Eric ja, das wäre ein potenzieller Nachteil. Ich werde meine Antwort aktualisieren. –

2

Nachteile sind Revisionen, die nicht ihrem tatsächlichen Zustand während der Entwicklung entsprechen, die Möglichkeit verlieren, die Commits zwischen Zusammenführungen mit Flags wie --first-parent zu verbergen, und es schwierig ist, Ihre Zweigstelle zu teilen, wenn Sie es später rebasieren wollen. Wenn Ihr Protokoll verrückt aussieht, werfen Sie einen Blick auf git help log erneut. Wahrscheinlichkeiten sind, gibt es eine Kombination von Flags, die es genau so aussehen lassen, wie Sie wollen, ohne Flexibilität zu opfern, wenn es gewünscht wird.