Rebasing
Rebasing umożliwia włączenie zmian z jednej gałęzi do innej gałęzi poprzez modyfikację historii zatwierdzeń. Odtwarza zatwierdzenia z gałęzi źródłowej do gałęzi docelowej. Powoduje to czystszą i bardziej liniową historię zatwierdzeń.
Przykład: powiedzmy, że masz wywołaną gałąź funkcji feature-branch
i chcesz uwzględnić najnowsze zmiany z tej main
gałęzi. Możesz użyć następującego polecenia:
git checkout feature-branch
git rebase main
Spowoduje to zastosowanie zatwierdzeń z main
gałęzi do pliku feature-branch
. Wszelkie konflikty będą musiały zostać rozwiązane podczas procesu rebase.
Stashing
Ukrywanie umożliwia zapisanie bieżących zmian, które nie są gotowe do zatwierdzenia, i tymczasowe przywrócenie czystego katalogu roboczego. Jest to przydatne, gdy musisz przełączyć się do innej gałęzi lub pracować nad inną funkcją bez zatwierdzania zmian, nad którymi aktualnie pracujesz.
Przykład: Powiedzmy, że pracujesz nad gałęzią funkcji i wprowadziłeś pewne zmiany, ale musisz przełączyć się do innej gałęzi. Możesz użyć następujących poleceń, aby ukryć zmiany:
git stash
po przejściu do nowej gałęzi możesz następnie zastosować ukryte zmiany, używając:
git stash apply
Git Hooks
Git Hooks
to skrypty uruchamiane przez określone zdarzenia Git, takie jak przed zatwierdzeniem, po zatwierdzeniu, przed przekazaniem itp. Pozwalają zautomatyzować określone działania lub wymusić określone reguły w przepływie pracy.
Przykład: Załóżmy, że chcesz uruchomić linter na swoim kodzie przed zatwierdzeniem. Możesz utworzyć skrypt przechwytujący przed zatwierdzeniem, który uruchamia linter i zapobiega zatwierdzeniu, jeśli wystąpią jakiekolwiek błędy lintingu.
Git Submodule
Git Submodule
pozwalają dołączyć inne repozytorium Git jako podkatalog w głównym repozytorium. Jest to przydatne, gdy masz projekt, który zależy od zewnętrznych bibliotek lub komponentów.
Przykład: masz projekt, który wymaga określonej biblioteki. Zamiast duplikować kod biblioteki w swoim repozytorium, możesz dodać go jako submoduł. W ten sposób możesz zachować oddzielny kod biblioteki i łatwo go aktualizować w razie potrzeby.
Git Revert and Git Reset
Git Revert
cofa poprzednie zatwierdzenie, tworząc nowe zatwierdzenie, które cofa zmiany dokonane w pierwotnym zatwierdzeniu. Git Reset
, z drugiej strony, pozwala przenieść wskaźnik gałęzi do innego zatwierdzenia, skutecznie odrzucając zatwierdzenia z historii zatwierdzeń.
Przykład: Jeśli chcesz cofnąć ostatnie zatwierdzenie, możesz użyć git revert HEAD
do utworzenia nowego zatwierdzenia, które cofa zmiany dokonane w ostatnim zatwierdzeniu. Jeśli chcesz całkowicie odrzucić ostatnie zatwierdzenie, możesz użyć, git reset HEAD~1
aby przesunąć wskaźnik gałęzi wstecz o jedno zatwierdzenie.
Te zaawansowane koncepcje w Git zapewniają potężne możliwości efektywnego zarządzania repozytorium. Zrozumienie, jak ich używać i kiedy je stosować, znacznie usprawni przepływ pracy Git i zarządzanie projektami.