Jak połączyć grupę lokalnych commitów z pojedynczym push w IDEA?

86

W IDEA próbuję naciskać na niektóre commity.

Mam wymaganie, aby na zdalnym serwerze wyglądało to na pojedynczą akcję.

Klikam, aby pchnąć i zobaczyć następujące okno wprowadź opis obrazu tutaj

Spodziewałem się tu zobaczyć pole wyboru squasha, ale go nie widzę.

Proszę pomóż mi.

gstackoverflow
źródło
2
Nie mogę udzielić porady IDEA, ale zgniatanie jest częścią interaktywnego ponownego bazowania lub scalania, a nie zatwierdzania. Spróbuj tam poszukać.
musiKk

Odpowiedzi:

116

Możesz to zrobić za pomocą rebase. Przejdź do VCS / Git / Rebase . Następnie wybierz opcję Interaktywna . Pokaże ci listę zatwierdzeń, gdzie możesz wybrać, które chcesz zgnieść.

Po naciśnięciu Start rebasing zapyta cię o komunikat o zatwierdzeniu dla zgniecionego zatwierdzenia. Po wykonaniu tej czynności możesz wypchnąć zgniecione zatwierdzenie za pomocą okna dialogowego push.

Okno dialogowe Squash

Więcej informacji o rebase w IntelliJ jest tutaj .

Bohuslav Burghardt
źródło
9
pomocne może być również przeczytanie tego artykułu Narzędzia Git - historia przepisywania, aby dowiedzieć się, co wpisać w polu „Onto” w oknie dialogowym „Rebase branch”: np. HEAD~3można użyć do wybrania ostatnich 3 zatwierdzeń.
TmTron
kiedy zgniatasz kilka zatwierdzeń, czy indywidualne szczegóły każdego z tych zatwierdzeń są tracone? czy to po prostu wygląda jak jedno wielkie zobowiązanie?
ycomp
@ycomp Tak, interaktywny rebase przepisuje historię, więc poszczególne zgniecione zatwierdzenia są tracone, a w ich miejsce tworzony jest nowy pojedynczy.
Bohuslav Burghardt
Dzięki, czy możesz cofnąć squasha?
ycomp
@ycomp Nigdy tego nie robiłem, ale powinno być możliwe. Zapoznaj się z następującymi postami SO: stackoverflow.com/q/10260151/1291150 , stackoverflow.com/q/134882/1291150
Bohuslav Burghardt
33

Jest nowy sposób:

Kontrola wersji -> Dziennik -> Kliknij prawym przyciskiem zatwierdzenie -> Interactively rebase from herea następnie możesz wybrać / zmiażdżyć pozostałe zatwierdzenia.

ValentinVoilean
źródło
1
Problem z tym podejściem polega na tym, że nie ma możliwości wybrania opcji „Squash” dla wielu zatwierdzeń i robienie tego po kolei staje się żmudne.
Dmitry Serdiuk,
4
@DmitrySerdiuk możesz przesunąć klawisz Shift, aby wybrać commity, które chcesz zgniatać, a następnie kliknij prawym przyciskiem myszy -> wybierz squash.
Aarjav
1
@Aarjav O MÓJ BOŻE, właśnie myślałem, że brakuje! Brak wskazówek dotyczących menu prawego przycisku myszy w oknie dialogowym.
o_nix
21

Dla mnie najprostszy sposób korzystania z intellij to:

  • Idź do Logzakładki i wybierz commit, z którego chcesz zmiażdżyć
  • Kliknij prawym przyciskiem myszy i wybierz Reset Branch to this commit
  • Wybierz mixinopcje, aby zachować zmiany przed zatwierdzeniem
  • Zatwierdź zmiany i nie zapomnij zaznaczyć Amend commitopcji
Oussama Zoghlami
źródło
1
To jest rzeczywiście najprostszy sposób i uważam, że jest najmniej stresujący i podatny na błędy.
davrog10
2
Sugeruję, że w kroku 3 lepiej byłoby wybrać Softopcję zamiast Mixedmieć wszystkie zmiany już przygotowane do zatwierdzenia.
provisota