Różnica między resetowaniem Git, kasowaniem Git i przywracaniem Git ⋆ ALexHost SRL

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills
17.01.2025

Różnica między resetowaniem Git, kasowaniem Git i przywracaniem Git

Wydajna kontrola wersji jest niezbędna dla każdego projektu deweloperskiego, a odpowiednia infrastruktura może znacznie usprawnić przepływ pracy. AlexHost oferuje wydajne i skalowalne rozwiązania hostingowe VPS, idealne do hostowania repozytoriów Git i zapewnienia płynnego zarządzania projektami. Dzięki dedykowanym adresom IPv4, szybkiej pamięci masowej NVMe i przyjaznemu dla użytkownika panelowi sterowania, AlexHost zapewnia idealne środowisko do uruchamiania Git i innych narzędzi programistycznych, zapewniając wydajność i niezawodność niezbędną do płynnej współpracy.

Podczas pracy z Git istnieje wiele poleceń, które umożliwiają cofanie zmian lub nawigację między różnymi stanami repozytorium. Trzy najczęściej używane w tym celu polecenia to git reset, git checkout i git revert. Choć mogą one wydawać się podobne, każda z nich służy innemu celowi i działa w inny sposób.

Poniżej znajduje się szczegółowy opis różnic między git reset, git checkout i git revert:


1. git reset

git reset jest używany do cofania zatwierdzeń lub zmian poprzez przeniesienie wskaźnika HEAD bieżącej gałęzi do określonego zatwierdzenia. Modyfikuje historię zatwierdzeń i może wpływać na katalog roboczy, obszar przejściowy lub oba, w zależności od tego, jak jest używany.

Przypadki użycia:

  • Cofanie ostatnich zatwierdzeń.
  • Przeniesienie wskaźnika HEAD z powrotem do wcześniejszego zatwierdzenia.
  • Wycofanie plików z obszaru przejściowego (przy jednoczesnym zachowaniu zmian w katalogu roboczym).

Składnia polecenia:

git reset [–soft | –mixed | –hard]

Tryby resetowania:

  • –soft: Przenosi wskaźnik HEAD do określonego zatwierdzenia, ale zachowuje zmiany zarówno w obszarze przejściowym, jak i katalogu roboczym.
  • –mixed (domyślnie): Przenosi wskaźnik HEAD do określonego zatwierdzenia i resetuje obszar przejściowy, ale zachowuje zmiany w katalogu roboczym.
  • –hard: Przesuwa wskaźnik HEAD, resetuje obszar przejściowy i odrzuca wszystkie zmiany w katalogu roboczym.

Przykład:

git reset –hard HEAD~1 # Cofnij HEAD o jedno zatwierdzenie i odrzuć wszystkie zmiany

Uwaga: git reset –hard jest operacją destrukcyjną, ponieważ trwale usuwa zmiany z katalogu roboczego i historii zatwierdzeń.


2. git checkout

git checkout służy do przełączania się między gałęziami lub do sprawdzania określonego zatwierdzenia lub pliku. Modyfikuje on katalog roboczy, aby dopasować go do stanu gałęzi, zatwierdzenia lub pliku, który został sprawdzony, ale nie modyfikuje historii zatwierdzeń, chyba że utworzysz nowe zatwierdzenie po przełączeniu gałęzi.

Przypadki użycia:

  • Przełączanie między gałęziami.
  • Sprawdzanie poprzedniego zatwierdzenia lub określonych plików bez zmiany historii zatwierdzeń.
  • Tworzenie nowej gałęzi.

Składnia polecenia:

git checkout <nazwa_gałęzi> # Przejście do innej gałęzi git checkout # Sprawdzenie określonego zatwierdzenia w odłączonym stanie HEAD git checkout — # Przywrócenie określonego pliku do ostatniego zatwierdzonego stanu

Przykład:

git checkout feature-branch # Przełącz na ‘feature-branch’ git checkout 123abc # Checkout commit z hash 123abc (odłączony stan HEAD) git checkout — file.txt # Przywróć plik.txt do stanu z ostatniego zatwierdzenia

Uwaga: Jeśli sprawdzisz konkretne zatwierdzenie (nie gałąź), wejdziesz w odłączony stan HEAD, co oznacza, że zmiany nie będą powiązane z żadną gałęzią, chyba że utworzysz nową gałąź od tego momentu.


3. git revert

git revert służy do cofnięcia zatwierdzenia poprzez utworzenie nowego zatwierdzenia, które odwraca zmiany wprowadzone przez oryginalne zatwierdzenie. Zachowuje historię zatwierdzeń, dzięki czemu jest to bezpieczny sposób na cofnięcie zmian bez przepisywania historii.

Przypadki użycia:

  • Bezpieczne cofanie commitów, zwłaszcza w gałęziach współdzielonych lub zdalnych.
  • Cofanie określonych commitów przy zachowaniu nienaruszonej historii commitów.
  • Cofanie zmian w środowisku współpracy.

Składnia polecenia:

git revert

Przykład:

git revert HEAD # Cofnij ostatnie zatwierdzenie i utwórz nowe zatwierdzenie z odwrotnymi zmianami git revert # Cofnij określone zatwierdzenie, tworząc nowe zatwierdzenie, które odwraca jego zmiany

Ważna uwaga: git revert nie usuwa żadnej historii ani commitów. Zamiast tego tworzy nowe zatwierdzenie, które cofa zmiany z określonego zatwierdzenia. To sprawia, że git revert jest nieniszczącym poleceniem, które zachowuje pełną historię zmian.

Kiedy używać poszczególnych poleceń

  • Użyj git reset gdy:
    • Musisz cofnąć ostatnie zatwierdzenie (lub wiele zatwierdzeń) w lokalnym repozytorium.
    • Chcesz wycofać pliki lub cofnąć zmiany w katalogu roboczym.
    • Pracujesz na lokalnej gałęzi i nie musisz zachowywać historii zatwierdzeń.
  • Używaj git checkout, gdy:
    • Musisz przełączać się między gałęziami.
    • Chcesz sprawdzić wcześniejsze zatwierdzenie bez modyfikowania historii (w odłączonym stanie HEAD).
    • Musisz przywrócić plik lub folder do poprzedniego stanu bez wpływu na pozostałe zmiany.
  • Użyj git revert, gdy:
    • Musisz cofnąć zmiany, które zostały już wypchnięte do współdzielonej lub zdalnej gałęzi.
    • Chcesz cofnąć zatwierdzenie, ale zachować nienaruszoną historię.
    • Współpracujesz z innymi i chcesz zachować jasną i dokładną historię zatwierdzeń.

Wnioski

Każde z tych poleceń Git – git reset, git checkout i git revert – ma swój unikalny cel i efekt. Zrozumienie, kiedy i jak prawidłowo z nich korzystać, jest niezbędne do skutecznego zarządzania historią i zmianami w projekcie. Podczas pracy w środowisku współpracy często bezpieczniej jest użyć git revert do cofnięcia zmian, podczas gdy git reset może być przydatny do czyszczenia lokalnej historii. git checkout, z drugiej strony, jest poleceniem służącym do przełączania gałęzi lub nawigowania po różnych commitach bez zmiany historii repozytorium.

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills