Wie kombiniere ich eine Gruppe lokaler Commits zu einem einzigen Push in IDEA?

85

In IDEA versuche ich, einige Commits zu pushen.

Ich habe die Anforderung, dass es auf einem Remote-Server wie eine einzelne Aktion aussieht.

Ich klicke, um zu drücken und sehe folgendes Fenster Geben Sie hier die Bildbeschreibung ein

Ich habe erwartet, dass hier das Kontrollkästchen Squash angezeigt wird, aber ich sehe es nicht.

Bitte hilf mir.

gstackoverflow
quelle
2
Ich kann keine IDEA-Ratschläge geben, aber Squashing ist Teil einer interaktiven Rebase oder einer Zusammenführung, kein Commit. Versuchen Sie dort zu suchen.
musiKk

Antworten:

114

Sie können dies mit Rebase tun. Gehen Sie zu VCS / Git / Rebase . Wählen Sie dann die Option Interaktiv . Es wird Ihnen eine Liste von Commits angezeigt, in der Sie auswählen können, welche Sie quetschen möchten.

Nachdem Sie auf Start neu starten geklickt haben, werden Sie zur Eingabe einer Festschreibungsnachricht für das gequetschte Festschreiben aufgefordert. Danach können Sie Ihr Squashed Commit mithilfe des Push-Dialogs verschieben.

Squash-Dialog

Weitere Informationen zur Rebase in IntelliJ finden Sie hier .

Bohuslav Burghardt
quelle
9
Es kann auch hilfreich sein, diesen Artikel über Git Tools - Rewriting History zu lesen, um zu erfahren, was in das Feld "Onto" des Dialogfelds "Rebase Branch" eingegeben HEAD~3werden muss : z. B. können Sie die letzten 3 Commits auswählen.
TmTron
Wenn Sie eine Reihe von Commits zusammenpressen, gehen dann die einzelnen Details jedes dieser Commits verloren? sieht es nur nach einem großen Commit aus?
ycomp
@ycomp Ja, die interaktive Rebase schreibt den Verlauf neu, sodass die einzelnen gequetschten Commits verloren gehen und an ihrer Stelle eine neue Single erstellt wird.
Bohuslav Burghardt
Danke, können Sie einen Kürbis rückgängig machen?
ycomp
@ycomp Ich habe das eigentlich nie gemacht, aber es sollte möglich sein. Bitte beziehen Sie sich auf folgende SO-Beiträge: stackoverflow.com/q/10260151/1291150 , stackoverflow.com/q/134882/1291150
Bohuslav Burghardt
33

Es gibt einen neuen Weg:

Versionskontrolle -> Protokoll -> Klicken Sie mit der rechten Maustaste auf das Commit ->, Interactively rebase from hereund Sie können den Rest der Commits auswählen / quetschen.

ValentinVoilean
quelle
1
Das Problem bei diesem Ansatz ist, dass es keine Möglichkeit gibt, "Squash" für mehrere Commits auszuwählen, und es wird mühsam, dies einzeln zu tun.
Dmitry Serdiuk
4
@DmitrySerdiuk Sie können den Klick verschieben, um die Commits auszuwählen, die Sie quetschen möchten, und dann mit der rechten Maustaste klicken -> Squash auswählen.
Aarjav
1
@Aarjav OH MEIN GOTT das ist genau das, was ich dachte, es fehlt! Keine Hinweise zum Rechtsklick-Menü im Dialog.
o_nix
21

Für mich ist der einfachste Weg mit Intellij:

  • Gehen Sie zur LogRegisterkarte und wählen Sie das Commit aus, aus dem Sie Squash machen möchten
  • Klicken Sie mit der rechten Maustaste und wählen Sie Reset Branch to this commit
  • Wählen Sie die mixinOptionen aus, um Ihre Änderungen vom Commit fernzuhalten
  • Übernehmen Sie Ihre Änderungen und vergessen Sie nicht, die Amend commitOption zu aktivieren
Oussama Zoghlami
quelle
1
Dies ist in der Tat der einfachste Weg und ich finde ihn am wenigsten stressig und fehleranfällig.
Davrog10
2
Ich schlage vor, dass es in Schritt 3 besser ist, eine SoftOption zu wählen, als Mixedalle Änderungen bereits für das Festschreiben bereitzustellen.
Vorbehalt