Wstęp
W tym artykule dowiemy się jak użyć git checkout aby przywrócić jeden plik z wcześniejszego commita.
Jeśli korzystasz z systemu kontroli wersji Git, to z pewnością docenisz jego elastyczność w zarządzaniu plikami. Git oferuje również złożone narzędzia, które pozwalają „podróżować w czasie” i manipulować indywidualnymi plikami w twoim repozytorium. W tym artykule skupimy się na jednej z tych zaawansowanych funkcji: przywracaniu pojedynczego pliku z wcześniejszego commita.
Pokażemy, jak ta umiejętność może uratować cię w sytuacjach kryzysowych i wpłynąć na efektywność twojego workflow.
Znalezienie ID commita
Aby cofnąć zmiany w pliku z wadliwego commitu, musimy najpierw zlokalizować ten commit z błędem. Gdy już wiemy w jakim commicie dodaliśmy błąd musimy skopiować hash tego commita z historii zmian. Poniższe screenshoty ilustrują, jak wykonać ten krok w przypadku GitHuba:


Uwaga: Proces ten może wyglądać nieco inaczej, w zależności od narzędzi z jakich korzystasz. Niemniej jednak, idea pozostaje ta sama: zidentyfikować wadliwy commit i skopiować jego hash.
Graficzny klient Gita:

Znalezienie ścieżki do pliku
Kolejnym istotnym krokiem w procesie jest zlokalizowanie ścieżki do pliku, którego chcemy przywrócić. Ważne jest, aby zrozumieć, że nie chodzi tu o ścieżkę systemową. Interesuje nas ścieżka względna w kontekście naszego repozytorium Git.
W praktyce oznacza to, że zamiast pełnej ścieżki systemowej typu:
„C:/Projekty/MojProjekt/plik.txt„
będziemy używać ścieżki względnej z do naszego repozytorium, na przykład:
MojProjekt/plik.txt
Odnalezienie tej ścieżki jest kluczowe, ponieważ bez niej nie będziemy mogli pokazać o jaki plik nam chodzi. W zależności od narzędzia, z którego korzystasz (linia komend, graficzny klient gita, itd.), metody odnalezienia tej ścieżki mogą się różnić, ale zawsze są to informacje dostępne w historii commitów lub w eksploratorze projektu.
GitHub:

Graficzny klient Gita:

Uwaga na ścieżki!
Zamiast wpisywać:
MojProjekt/plik.txt
Bezpieczniej jest użyć:
„MojProjekt/plik.txt”
Ten drugi zapis zapewnia, że cała ścieżka jest traktowana jako jeden, spójny argument, co eliminuje ryzyko wystąpienia błędów wynikających ze złej interpretacji spacji.
Jak użyć git checkout?
Aby naprawić błąd w pliku za pomocą Git, konieczne jest użycie komendy git checkout, podając przy tym hash wadliwego commita, na końcu dodając ~1 (co pozwoli nam na pobranie pliku z commita poprzedzającego o 1 ten wadliwy), oraz ścieżkę do interesującego nas pliku. Ważne jest, aby pamiętać, że w tej komendzie używamy dwóch myślników (--), a nie jednego!
W praktyce komenda będzie wyglądała następująco:
git checkout HASH~1 -- "ścieżka/do/pliku"
A tak prezentuje się gotowa komenda, dostosowana do commita i pliku przedstawionych na wcześniejszych obrazkach:




