Flatten commits auf einem branch
Ist es möglich, verdichten sich die commits auf einem branch zu einem einzigen commit vor der Fusion mit der main? Ich dachte, das wäre ein ziemlich häufiges Szenario, aber vielleicht bin ich nicht die richtigen Suchbegriffe.
Ich erkläre das Szenario im detail. Oft würde ich machen wollen, viele lokale commits während der Arbeit auf eine Veränderung in einer Branche, um sicherzustellen, dass ich eine umfassende Geschichte der änderungen. Aber sobald durch die mit den Veränderungen in der Branche, wenn ich Zusammenführen wichtigsten, ich möchte reduzieren die commits auf dem branch zu einem einzigen, und dann verschmelzen Sie zu main. Ich verstehe, dass die verpflichtet sind preiswert in Git, aber in manchen Situationen, könnte ich es vorziehen, dies zu tun.
* merge to main
|\
* | commit 2 on main
* | commit 1 on main
| * commit 2 on branch
| * commit 1 on branch
|/
* branch from main
vorgenommen werden, um zu schauen, wie
* merge to main
|\
* | commit 2 on main
* | commit 1 on main
| * commit on branch (branch commits flattened to one)
|/
* branch from main
Ich bin ein Neuling, wenn es um git. Wenn ich geirrt haben in der Verwendung von Begriffen, ich entschuldige mich.
InformationsquelleAutor der Frage Coffee And Keyboard | 2012-07-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Interaktiven Rebase. Finden Sie die commit denen Ihre Branche sich von master (kann mit
git merge-base
lassen; rufen Sie die commit -<diverge>
), dannund ein editor öffnet sich, so dass Sie die Geschichte neu schreiben interaktiv. Sie möchten squash verpflichtet.
InformationsquelleAutor der Antwort Fred Foo
Ich würde empfehlen, das erlernen der Nutzung des interaktiven rebase, aber in der Fall scheint zu kompliziert für Sie, können Sie einfach
git reset --soft <diverging-commit>
rückgängig machen alle commits bis zu dem divergierenden Punkt, ohne ändern des index, und
git commit -s
machen einem commit alle änderungen.
InformationsquelleAutor der Antwort thameera
Können Sie auch
git merge --squash <branch>
verbinden eine Verzweigung ohne Ausführung jeglicher verpflichtet:Natürlich sollten Sie dem Drang widerstehen, um dies zu tun, wenn Sie Ihr helfen können. Sehen Du Sollst Nicht Lügen: git rebase, zu ergänzen, squash und andere Lügen für eine Diskussion über warum.
InformationsquelleAutor der Antwort Trevor Robinson
Blick auf
git rebase
. Die-i
option gibt Ihnen die chance, zu Bearbeiten, squash (was Sie wollen), oder sogar zu entfernen, verpflichtet.Zum Beispiel, die Art, wie ich es in der Regel so:
InformationsquelleAutor der Antwort chmeee