
Haben Sie genug von unordentlichen Commit-Verläufen, die Ihre Git-Repositorys und Pull-Anfragen überladen? Glücklicherweise verfügt Git über die Fähigkeit, „Commits zu unterdrücken“. Dadurch werden mehrere kleine Commits zu einem zusammengeführt. Dies trägt dazu bei, dass Ihr Codeverlauf sauber und organisiert bleibt, und ist mit ein paar Befehlen einfach zu bewerkstelligen.
Warum Squash-Commits?
Eine der goldenen Regeln einer guten Git-Etikette besteht darin, häufig Commits mit guten Nachrichten durchzuführen, die erklären, was die Commits bewirken. Dies kann jedoch schnell zum Problem werden, wenn zu viele Commits gepusht werden. Schließlich möchte niemand eine Pull-Anfrage mit 40 verschiedenen Commits überprüfen, die alle zum Zusammenführen in den Master bereit sind – das ist einfach zu viel Unordnung.
Bevor Sie also in ein Remote-Repository wie GitHub pushen, empfiehlt es sich, diese Commits zu zerkleinern, wodurch sie alle zu einem großen Commit zusammengeführt werden. Alle Commit-Nachrichten dieser Commits werden zum „Squash-Commit“ hinzugefügt. sodass sie immer noch alle sichtbar sind, wenn Sie sie an GitHub senden oder Ihre Pull-Anfrage senden.
Es ist auch nicht immer notwendig, jedes Commit zu unterdrücken, da es manchmal schön ist, Dinge aufzuteilen angezeigt, wenn Sie an mehreren verschiedenen Dateien oder Teilen des Repositorys arbeiten. Wenn Sie jedoch im Laufe der Zeit nur mehrere Änderungen an einer einzelnen Datei vornehmen, sollten Sie diese Commits wahrscheinlich unterdrücken.
Es ist wichtig zu beachten, dass Sie Commits nicht bereits jetzt unterdrücken können auf GitHub gepushtohne gewaltsames Drücken, was eine zerstörerische Operation ist. Durch das Squashing von Commits wird der Git-Verlauf überschrieben. Dies ist in Ordnung, wenn Sie dies nur auf Ihrem lokalen Computer tun. Wenn Sie dies auf GitHub tun, ist ein Force-Push erforderlich, was bedeutet, dass alle Ihre Teammitglieder das Repository erneut klonen müssen, um Konflikte zu vermeiden.
Um diese Probleme zu vermeiden, ist es erforderlich. Am besten unterdrücken Sie Commits, bevor Sie sie in das Remote-Repository übertragen. Da dies normalerweise der Zeitpunkt ist, an dem Sie dies ohnehin tun möchten, stellt dies normalerweise kein Problem dar.
Git-Commits mit git merge unterdrücken
Es gibt verschiedene Möglichkeiten, Commits zu unterdrücken, da es kein offizielles “ gibt ;Git Squash” Befehl. Eine der einfachsten Methoden ist die Verwendung von git merge mit dem Flag –squash. Diese Technik führt die letzten N Commits zu einem zusammen.
Zunächst möchten Sie sicherstellen, dass Ihr Repository völlig sauber ist und keine aktiven Änderungen aufweist. Sie können den Git-Status überprüfen, um sicherzustellen, dass Sie keine lokalen Änderungen haben, die durch das Zurücksetzen verworfen würden.
Als nächstes möchten Sie den Zweig auf die Position zurücksetzen, an der er sich vor einem dieser Schritte befand die Commits, die Sie zusammenfassen möchten. Um beispielsweise die letzten drei Commits zu unterdrücken, würden Sie HEAD~3 verwenden, was technisch gesehen der vierte Commit im Verlauf ist, aber alle drei quetschbaren Commits aus Ihrem Verlauf entfernt.
git reset –hard HEAD~3
Sie können auch einen Commit-SHA-1-Hash verwenden, um direkt auf einen Commit zu verweisen. Als nächstes führen wir git merge –squash aus, wobei das Zusammenführungsziel HEAD@{1} ist, was die Position des HEAD vor dem letzten Befehl ist.
git merge –squash 'HEAD@{1}' < p>Git hat zu diesem Zeitpunkt bereits alle Änderungen mit der richtigen Commit-Nachricht bereitgestellt, aber sie müssen noch festgeschrieben werden:
git commit

Sobald dies erledigt ist, können Sie alle Commits in Ihr Upstream-Quell-Repository übertragen.
Mehr Kontrolle über das Squashing mit interaktivem Rebase
Wenn Sie nicht alles in einem einzigen Bit-Commit zusammenfassen möchten, können Sie ein interaktives Rebase durchführen, um nur die Commits auszuwählen, die Sie unterdrücken möchten. Das Rebasing kann kompliziert sein, ist aber mit den richtigen Schritten einfach durchzuführen.
Starten Sie zunächst das interaktive Rebase, indem Sie auf den Commit vor dem letzten Squash-Commit abzielen:
git rebase -i KOPF~3
Dadurch wird ein Texteditor geöffnet, in dem Sie die Option „Auswählen“ ändern können. „zerquetschen“ für jeden Commit, den Sie zusammenführen möchten.

Git öffnet dann einen anderen Editor, in dem Sie eine neue Commit-Nachricht für den kombinierten Commit erstellen können. Speichern Sie dies, und das Rebase sollte abgeschlossen sein.
Durch das Rebasing auf diese Weise werden alle gequetschten Commits mit dem nächsten Commit darüber zusammengeführt. In diesem Fall wurden der zweite und der dritte Commit mit dem ersten zusammengeführt.
Git-Commits mit einer Git-GUI unterdrücken
Wie die meisten Aktionen in Git ist das Unterdrücken von Commits mit einer Schnittstelle viel einfacher, als sich jedes Mal Befehle zu merken und einzugeben. Tatsächlich können Sie in GitKraken einfach bei gedrückter Ctrl-Taste auf die Commits klicken, die Sie zerquetschen möchten, und mit der rechten Maustaste klicken, um „2 Commits zerquetschen“ zu drücken:

Sie können unseren Leitfaden zu GUI-Git-Clients lesen, um mehr zu erfahren.
VERWANDTE: Sollten Sie einen GUI-Git-Client verwenden?
WEITER LESEN
- › So verwenden und passen Sie die virtuelle Tastatur auf Ihrem Steam-Deck an
- › Austauschbare Smartphone-Akkus könnten ein Comeback erleben
- › 7 Gründe, warum Sie RGB-Beleuchtung aus Ihrem Gaming-Setup entfernen sollten
- › So schalten Sie Anrufe von unbekannten Nummern auf WhatsApp stumm
- › VMware bringt 3D-beschleunigtes Windows 11 auf Apple Silicon Macs
- › Mac Trackpad funktioniert nicht? 10 Tipps und Tricks zum Ausprobieren