Odzyskiwanie określonych danych przy użyciu poleceń usługi Git

Ukończone

Możliwość odzyskiwania danych przy użyciu poleceń git ma kluczowe znaczenie dla deweloperów w celu przywrócenia przypadkowych zmian, przywrócenia usuniętych plików lub odzyskania utraconych zatwierdzeń. Przyczynia się do zminimalizowania nieoczekiwanych przestojów i zapewnienia ciągłości projektu. Jednak chociaż jej korzyści są jasne, ważne jest, aby wskazać swoje potencjalne zagrożenia. Podczas stosowania polecenia Git opisanego w tej lekcji ważne jest, aby zachować ostrożność, szczególnie podczas manipulowania historią zatwierdzeń lub przywracania zmian, ponieważ błędy mogą prowadzić do utraty danych.

Polecenia odzyskiwania danych usługi Git

Polecenia git, które zajmują się odzyskiwaniem danych, można zgrupować w kilka kategorii, w tym odzyskiwanie zatwierdzeń, plików, określonych wierszy kodu i usuniętych zatwierdzeń lub gałęzi.

Odzyskiwanie zatwierdzeń

  • dziennik git: wyświetla listę historii zatwierdzeń repozytorium. Możesz przejść przez dziennik, aby znaleźć zatwierdzenie, które chcesz odzyskać.
  • zatwierdzenie> wyewidencjonowania <git: przełącza się do określonego zatwierdzenia, efektywnie "odzyskując" stan repozytorium w tym zatwierdzeniu.
  • zatwierdzenie> git cherry-pick<: stosuje zmiany wprowadzone przez określone zatwierdzenie do bieżącej gałęzi.

Odzyskiwanie plików

  • Plik> zatwierdzenia<>wyewidencjonowania <git: przywraca określony plik z poprzedniego zatwierdzenia.
  • plik przywracania <git: odrzuca zmiany lokalne i przywraca plik do stanu ostatniego zatwierdzonego przy założeniu, że zmiany nie zostały jeszcze> zatwierdzone.

Odzyskiwanie określonych wierszy kodu

  • plik> winy <git: wyświetla poprawkę i autora każdego wiersza w pliku, pomagając zidentyfikować zatwierdzenie, które wprowadziło konkretną zmianę.
  • git show <commit>:<file>: wyświetla zawartość pliku w określonym zatwierdzeniu. Możesz określić ścieżkę zatwierdzenia i pliku, aby zobaczyć zawartość tak, jak istniała w tym momencie.

Odzyskiwanie usuniętych zatwierdzeń lub gałęzi

  • git reflog: wyświetla rekord wszystkich zatwierdzeń. Można go użyć do znalezienia skrótu SHA-1 wcześniej usuniętego zatwierdzenia lub gałęzi, a następnie wyewidencjonowania lub przywrócenia go.
  • git fsck --lost-found: sprawdza integralność repozytorium i wyświetla listę zatwierdzeń, które nie są osiągalne z żadnej gałęzi lub tagu. Można go użyć do odzyskania utraconych zatwierdzeń.

Pamiętaj, aby używać tych poleceń z ostrożnością, szczególnie podczas manipulowania historią zatwierdzeń lub przywracania zmian. Przed rozpoczęciem lub użyciem usługi Git stash należy utworzyć kopię zapasową repozytorium, aby zapisać bieżące zmiany przed podjęciem próby wykonania jakichkolwiek operacji odzyskiwania.

Przykładowy scenariusz

Przyjrzyjmy się przykładowemu scenariuszowi, który ilustruje proces odzyskiwania usuniętego pliku za pomocą poleceń Git. Zakładamy, że plik o nazwie example.txt znajdujący się w repozytorium Git został przypadkowo usunięty i musisz go odzyskać.

Wyświetlanie historii zatwierdzń:

  • Zacznij od wyświetlenia historii zatwierdzń:
    dziennik git
  • Na liście historii zatwierdzeń zidentyfikuj skrót SHA-1 zatwierdzenia, w którym plik example.txt był ostatnio obecny.

Przywracanie usuniętego pliku:

  • Po zidentyfikowaniu skrótu SHA-1 zatwierdzenia użyj wyewidencjonowania git, aby przywrócić plik:
    git checkout <commit_SHA>^ — example.txt
  • Zastąp <commit_SHA> skrótem SHA-1 zatwierdzenia. Symbol ^ wskazuje element nadrzędny tego zatwierdzenia, skutecznie przywracając plik do stanu przed usunięciem.

Weryfikowanie zmian:

  • Po przywróceniu pliku sprawdź, czy został on pomyślnie przywrócony, sprawdzając stan repozytorium:
    stan usługi git
  • Sprawdź, czy example.txt wymienione jako zmodyfikowany lub nieśledzony plik.

Przejściowe i zatwierdzające zmiany:

  • Jeśli plik jest wymieniony jako zmodyfikowany, przygotuj go do zatwierdzenia:
    git add example.txt
  • Zatwierdź zmiany za pomocą odpowiedniego komunikatu zatwierdzenia:
    git commit -m "Przywrócony example.txt"