2016-06-23 16 views
0

ich eine Erhaltenes begehen Geschichte haben, die wie folgt aussieht:Einfache Git Geschichte Abflachen Verpflichtet

enter image description here

als Zweig (blau) gezeigt wird, wurde vom Master (rot) erstellt und später verschmolzen zurück in Meister. Der Meisterzweig hatte sich überhaupt nicht verändert.

Ist es möglich, diese Schleife rückwirkend in eine lineare Folge von 5 nicht gequetschten Commits zu reduzieren?

Ich denke, wenn der letzte Merge-Commit als git rebase Master gemacht wurde, die mir die lineare Sequenz gegeben hätte.

+0

Sie können 'git rebase' oder' git replace' verwenden, um dies zu erreichen. – CodeWizard

Antwort

1

Um einen Flat-Git-Verlauf zu erhalten, sollten Sie rebase anstelle von merge verwenden, wenn Sie Zweige aktualisieren möchten. In another post können Sie eine Erklärung von Rebase versus Merge sehen.

Von Ihrem aktuellen Zustand, wenn Ihr HEAD (master) die Zusammenführung ist, könnten Sie tun

  • Ihre Arbeits dir reinigen (oder Stash Änderungen)

  • git reset --hard LastCommit, wo LastCommit die letzte von Rot begehen Zweig, der nicht auf dem blauen steht.

  • git rebase blueBranch redBranch

git-rebase - Reapply verpflichtet auf einer anderen Basis Spitze

+0

Aber vermutlich enthält 'blueBranch' nicht das finale Merge-Commit, das es in' master' zusammenführt. Dieses Commit (d. H. Der HEAD) ist Teil der Commits des "Masters". –

+0

@AdiShavit Diese Zusammenführung wird nicht benötigt, wenn Sie eine Rebase erstellen. Meinst Du das? –

+1

Allgemeine Warnung, nur Rebase, wenn Ihre Commits alle lokal sind. Wenn Sie diese Commits bereits gepusht haben, kann Rebase zu allen möglichen Problemen führen. –

0

In diesem Fall git reset HEAD^2 --hard genug ist.