Zusammenführen und Squash in Git
Meistens stoßen wir bei der Arbeit an einem bestimmten Arbeitszweig auf eine Situation und müssen uns vom Arbeitszweig zum Hauptzweig festlegen. Aber wir haben bereits viele Commits für verschiedene Probleme im Arbeitszweig.
In diesem Artikel wird erläutert, wie Sie mit den Git-Befehlen viele funktionierende Commits zu einem einzigen Commit zusammenführen und quetschen. Mit Hilfe von Squash- und Merge-Befehlen in git können wir alle Commits unserer gewünschten Anfrage zu einem einzigen Commit zusammenführen und einen sauberen Verlauf beibehalten. Das Squashing der Commits hilft uns, den Commit-Verlauf unseres gewünschten Branchs zu bereinigen, wenn er unsere Merge-Anfrage akzeptiert. Es fügt alle Änderungen, die wir in der Merge-Anfrage erwähnt haben, als einen einzigen Commit ein und führt diesen Commit anschließend mit Hilfe der für das Projekt angegebenen Merge-Methode zusammen.
Angenommen, wir haben zwei Zweige:
- Arbeitszweig
- Hauptniederlassung
Git Checkout Branch für Merge
Um alle Commits unseres Arbeitszweigs zu quetschen und in den Hauptzweig einzufügen, können wir die folgenden Schritte ausführen:
Wir müssen mit dem folgenden git checkout-Befehl vom Working-Branch in den main
-Zweig wechseln:
git checkout main
Merge & Squash-Zweig in Git
Durch die Ausführung von Squash werden alle unsere Commits aus dem Working-Branch genommen und ein einziger squash
für alle Commits des Working-Branchs in den Haupt-Branch gemacht. Wenn Probleme auftreten, können wir diese manuell mit dem folgenden Befehl lösen:
git merge --squash feature
Hinweis: Der obige Befehl führt keinen Merge-Commit durch. Wir müssen dies manuell mit dem folgenden Befehl tun.
Änderungen an den Zweig in Git übertragen
Übertragen Sie nun zusammengeführte Änderungen mit einer kombinierten Nachricht.
git commit -m <"add comment here">
Wenn Sie die Commit-Nachricht nicht hinzufügen möchten, können Sie den Abschnitt -m
und den Kommentar überspringen, der die Nachricht mit dem Commit an den Branch nicht enthält.
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn