Jak połączyć ostatnie N zatwierdzeń Git

Git Commands

Opanowanie zgniatania zatwierdzeń w Git:

Podczas pracy nad projektem historia zatwierdzeń może być zaśmiecona licznymi małymi zatwierdzeniami. Te drobne zmiany mogą utrudnić przeglądanie zmian i zrozumienie historii projektu.

W Git możesz zmieścić N ostatnich zatwierdzeń w jednym zatwierdzeniu, tworząc czystszą i łatwiejszą w zarządzaniu historię. Ten przewodnik przeprowadzi Cię przez kolejne etapy osiągnięcia tego celu, zwiększając efektywność kontroli wersji.

Komenda Opis
git rebase -i HEAD~N Inicjuje interaktywną zmianę bazy ostatnich N zatwierdzeń.
pick Utrzymuje zatwierdzenie w niezmienionym stanie podczas interaktywnej zmiany bazy.
squash Łączy zatwierdzenie z poprzednim podczas interaktywnej zmiany bazy.
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo Automatycznie zastępuje „pick” słowem „squash” dla wszystkich oprócz pierwszego zatwierdzenia na liście rzeczy do zrobienia w bazie rebase.
git rebase --continue Kontynuuje proces zmiany bazy po rozwiązaniu konfliktów.
git rebase --abort Przerywa proces rebase i powraca do stanu sprzed rozpoczęcia rebase.
HEAD~N Odnosi się do zatwierdzenia N miejsc przed bieżącym HEAD.

Zrozumienie Git Commit Squashing

Pierwszy skrypt używa aby zainicjować interaktywną zmianę bazy ostatnich N zatwierdzeń. Na ekranie interaktywnym zamieniasz „pick” na „squash” w przypadku zatwierdzeń, które chcesz połączyć. Ten proces pomaga skonsolidować wiele mniejszych zatwierdzeń w jedno, dzięki czemu historia zatwierdzeń jest czystsza i łatwiejsza w zarządzaniu. Po edycji zapisz i zamknij edytor. Jeśli pojawią się konflikty, rozwiąż je i kontynuuj .

Drugi skrypt to skrypt Bash, który automatyzuje proces zgniatania. Rozpoczyna się od sprawdzenia, czy podano liczbę zatwierdzeń (N). Potem to działa i używa aby zastąpić „pick” słowem „squash” dla wszystkich oprócz pierwszego zatwierdzenia na liście rzeczy do zrobienia w bazie rebase. Ułatwia to zgniatanie wielu zatwierdzeń bez ręcznej edycji pliku. Na koniec kontynuuje proces rebase za pomocą , automatycznie rozwiązując wszelkie niezbędne konflikty.

Zmiażdż wiele zatwierdzeń w jedno za pomocą Git Rebase

Polecenia Gita

git rebase -i HEAD~N
# Replace N with the number of commits you want to squash
# In the interactive rebase screen that appears, change 'pick' to 'squash' (or 's') for the commits you want to squash
# Save and close the editor
# Edit the commit message if needed, then save and close the editor again
# If there are conflicts, resolve them and then run
git rebase --continue
# Your last N commits are now squashed into one commit

Automatyzacja zgniatania zatwierdzeń za pomocą skryptu powłoki

Skrypt Basha

#!/bin/bash
if [ -z "$1" ]
then
  echo "Usage: ./squash_commits.sh <N>"
  exit 1
fi
git rebase -i HEAD~$1
# Automatically replace 'pick' with 'squash' for all but the first commit
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo
git rebase --continue

Zaawansowane techniki zgniatania Git

Innym ważnym aspektem zgniatania zatwierdzeń w Git jest obsługa konfliktów scalania, które mogą pojawić się podczas procesu. Podczas łączenia wielu zatwierdzeń zmiany z różnych zatwierdzeń mogą powodować konflikty ze sobą. Aby rozwiązać te konflikty, Git udostępnia polecenia takie jak aby zobaczyć, które pliki są w konflikcie i aby oznaczyć je jako rozwiązane. Po rozwiązaniu konfliktów kontynuujesz zmianę bazy za pomocą .

Przydatna jest również wiedza, jak przerwać zmianę bazy, jeśli coś pójdzie nie tak. Komenda zatrzymuje proces rebase i przywraca repozytorium do poprzedniego stanu przed rozpoczęciem rebase. Dzięki temu możesz bezpiecznie cofnąć wszelkie zmiany wprowadzone podczas procesu zmiany bazy. Zrozumienie tych poleceń może znacznie poprawić Twoją zdolność do wydajnego zarządzania złożonymi historiami Git.

  1. Co oznacza zgniatanie zatwierdzeń?
  2. Zgniatanie zatwierdzeń oznacza łączenie wielu zatwierdzeń w jedno zatwierdzenie, aby uprościć historię zatwierdzeń.
  3. Dlaczego powinienem zmiażdżyć zatwierdzenia?
  4. Zgniatanie zatwierdzeń może sprawić, że historia projektu będzie czystsza i łatwiejsza do odczytania, zwłaszcza gdy używanych jest wiele małych zatwierdzeń.
  5. Jak rozpocząć interaktywną bazę danych?
  6. Użyj polecenia , zastępując N liczbą zatwierdzeń, które chcesz zmiażdżyć.
  7. Co oznaczają „pick” i „squash” w interaktywnej bazie danych?
  8. „Wybierz” utrzymuje zatwierdzenie w niezmienionej postaci, podczas gdy „squash” łączy je z poprzednim zatwierdzeniem.
  9. Jak rozwiązać konflikty podczas zmiany bazy?
  10. Używać aby zidentyfikować konflikty, rozwiązać je ręcznie, a następnie użyć I .
  11. Czy mogę przerwać zmianę bazy, jeśli coś pójdzie nie tak?
  12. Tak, możesz skorzystać aby zatrzymać zmianę bazy i powrócić do poprzedniego stanu.
  13. Jaka jest korzyść z używania skryptu Bash do zgniatania zatwierdzeń?
  14. Skrypt Bash automatyzuje proces, oszczędzając czas i zmniejszając ryzyko błędów ręcznych.
  15. Czy istnieje sposób na automatyczne zgniatanie zatwierdzeń w bazie?
  16. Tak, używając skryptu do modyfikowania listy rzeczy do zrobienia w bazie , możesz automatycznie zmienić opcję „pick” na „squash”.

Podsumowanie Git Commit Squashing

Zgniatanie zatwierdzeń w Git to potężna technika pozwalająca zachować czystą i czytelną historię projektu. Niezależnie od tego, czy używasz interaktywnego rebase, czy automatyzujesz za pomocą skryptu Bash, możesz połączyć wiele zatwierdzeń w jedno, co ułatwia zarządzanie dziennikiem. Zrozumienie, jak rozwiązywać konflikty i przerywać zmianę bazy, zwiększa twoją biegłość w Git, zapewniając, że poradzisz sobie z wszelkimi pojawiającymi się problemami. Opanowanie tych poleceń i metod znacznie poprawi praktyki kontroli wersji.