GitTworzenieRewizjiPrzywracanie StanuPlikow

Tworzenie rewizji, przywracanie stanu plików

Rewizja, wiele razy padło już to słowo w poprzednich postach. Potocznie zwana „komitem”. Czym dokładnie jest, po co używamy oraz jak za jej pomocą możemy zmieniać stan plików. Na te i inne pytania znajdziecie odpowiedź poniżej, zapraszam 🙂

Tworzenie rewizji

Rewizja, potocznie komit (ang. commit)(zapis) służy do zapamiętywania stanu plików w obszarze roboczym. Komenda odpowiedzialna za stworzenie rewizji to:

git add -A
git commit -m "Moja pierwsza rewizja"

Powyższe tworzą zapis bieżącego stanu wszystkich plików w folderze roboczym (ang. snapshot). Równoznaczne polecenia do powyższych to:

git add .
git commit -a -m "Moja pierwsza rewizja"

Parametr -A przy poleceniu git add jest równoznaczne z parametrem —-all. Poniżej obie równoznaczne komendy:

git add -A
git add --all

Polecenie śledzenia jednego konkretnego pliku można wydać na jeszcze jeden sposób, podając jego nazwę, albo ścieżkę do niego:

git add nazwaPliku
git add c:\mojeRepo\a.txt
git add a.txt

Dla przykładu stwórzmy pięć rewizji

  • Stwórz nowy pusty folder
  • Przejdź do tego folderu
  • Utwórz repozytorium
  • Dodaj plik
  • Utwórz rewizje
C:\mojeRepo        // znajduję się w tym miejscy
git init           // wydaje polecenie utworzenia repozytorium

// Pierwsza rewizja
touch a.txt        // tworze pusty plik a.txt
git add a.txt      // zapamiętuje stan pliku a.txt
git commit -m "Dodaje moją pierwszą rewizje, w której znajduję się plik a.txt" 
...
// Piąta rewizja
touch e.txt        // tworze pusty plik e.txt
git add e.txt      // zapamiętuje stan pliku e.txt
git commit -m "Dodaje moją piątą rewizje, w której znajduję się plik e.txt" 

Wydajmy polecenie git log w celu zobaczenia naszej historii działania na repozytorium

C:\mojeRepo (master)
git log
commit c1fc1650f0ebbdf776cbd147700305cb686c5034
Author: Przemysław Juśkiewicz 
Date:   Sun Feb 11 20:15:39 2018 +0100

    Dodanie piątej rewizji, w której znajduję się plik e.txt

commit c74f6b5b3c4f560b5f2a5c133262080c98bcc807
Author: Przemysław Juśkiewicz 
Date:   Sun Feb 11 20:15:39 2018 +0100

    Dodanie czwartej rewizji, w której znajduję się plik d.txt

commit cae60031462cab1416046afd776d94e08f25cc44
Author: Przemysław Juśkiewicz 
Date:   Sun Feb 11 20:15:38 2018 +0100

    Dodanie trzeciej rewizji, w której znajduję się plik c.txt

commit 77336525be2dd6048e35547aa9a7cd3b0444a02b
Author: Przemysław Juśkiewicz 
Date:   Sun Feb 11 20:15:38 2018 +0100

    Dodanie drugiej rewizji, w której znajduję się plik b.txt

commit 7ded05bfc9463ae9e29a7e07ccb01410d84a692c
Author: Przemysław Juśkiewicz 
Date:   Sun Feb 11 20:15:37 2018 +0100

    Dodanie pierwszej rewizji, w której znajduję się plik a.txt

Przywracanie stanu plików do konkretnej rewizji

Powyższe wykonanie pięć rewizji będzie teraz bardzo przydatne. Będziemy poruszać się po historii naszych komitów. Dokładniej mówiąc, będziemy przywracać stan plików z danej rewizji. Jeżeli w rewizji o SHA-1 cae60031462cab1416046afd776d94e08f25cc44 został dodany plik c.txt, a przed nim były dodane dwa pliki a.txt i b.txt to przejście do tej rewizji spowoduję, że w folderze znajdą się trzy pliki, nie pięć jak jest teraz.

Pliki obszaru roboczego można przywrócić za pomocą polecenia:

git checkout [SHA-1]

Teraz mając nasze pięć rewizji, przywróćmy stan roboczy z trzeciej rewizji.

git checkout cae60031462cab1416046afd776d94e08f25cc44

Po wydaniu powyższej komendy nasz obszar roboczy będzie wyświetlać pliki z komita trzeciego oraz wszystkie przed nim, w naszym przypadku folder będzie posiadać trzy pliki
a.txt, b.txt, c.txt. Po takiej operacji następuje zmiana stanu w repo Gita. Po takim zabiegu odłączymy się od głównej gałęzi (master), o czym poinformuje nas git, wyświetlając informację:

C:\MojeRepo (master)
git checkout cae60031462cab1416046afd776d94e08f25cc44
Note: checking out 'cae60031462cab1416046afd776d94e08f25cc44'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b 

HEAD is now at cae6003... Dodanie trzeciej rewizji, w której znajduję się plik c.txt

C:\MojeRepo (HEAD detached at cae6003)

Jeżeli nie wiesz, czym jest gałąź albo stan detached HEAD, nie przejmuj się, informacje odnośnie gałęzi (ang. branch) pojawi się wkrótce.

W naszym folderze ukazały się trzy pliki, tak jak tego chcieliśmy. Teraz widać doskonale potęgę rewizji i tego, że warto każdą zmianę komitować, aby w razie pomyłki móc powrócić do wersji poprzedniej.

Jak git nas poinformował, odłączyliśmy się od gałęzi master i zostaliśmy wrzuceni do miejsca SHA-1 cae6003, (Skrót SHA-1, można podawać od 6 znaków początkowych, nie trzeba wpisywać całego klucza cae60031462cab1416046afd776d94e08f25cc44). Aby sprawdzić, na jakiej gałęzi się znajdujemy wydaj polecenie

C:\MojeRepo (HEAD detached at cae6003)
git branch

Przywracanie rewizji za pomocą powyższej metody zwróci wynik dla git branch

* (HEAD detached at cae6003)
  master

Teraz widzimy, że nie znajdujemy się na żadnej gałęzi. W celu powrotu do gałęzi głównej, czyli master, wykonaj polecenie:

C:\MojeRepo (HEAD detached at cae6003)
git checkout master

Przestrzeń robocza zostanie zwrócona do ostaniego komita z gałęzi master, czyli naszym oczom ukaże się ponownie pięć plików w folderze. Jak wspomniałem wcześniej, zagadnieniem gałęzi, jak i przechodzeniem po nich zajmę się w następnych postach. Tutaj chce, abyś zobaczył, jak robienie częstych rewizji jest ważne, żeby w razie czego móc powrócić do poprzedniej wersji.

Podsumowanie

Rewizje, komity służą do zapamiętywania stanu plików z przestrzeni roboczej w repozytorium. Dzięki nim mamy całą historię naszego projektu. Dzięki archiwizacji, w postaci wielu rewizji, możemy przeskakiwać między nimi w celu cofnięcia się do innego miejsca w historii.

W tym wpisie padły nowe informacje odnośnie gałęzi git branch, tego typu zagadnienia poruszę w następnych wpisach, teraz nie przejmuj się tym, że nie wiesz, nie rozumiesz, co to jest. Teraz skupmy się na tym, jak tworzyć rewizje oraz możliwościach poruszania się po nich.

 

 

 

Pozdro 🙂
 

4 komentarze

  1. Powrót do gałęzi głównej master powinien chyba wyglądać , tak:

    git checkout master zamiast git branch master

    $ git checkout master
    Previous HEAD position was eb2fa9e Dodaj─Ö 3ci─à rewizj─Ö, w kt├│rej jest c.txt
    Switched to branch 'master’

    Pozdr
    Rafał

  2. 🙂 2 godziny móżdżenia po internecie bo nie chciało wrócić do 5 plików, ale udało się

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*