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śkiewiczDate: 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 -bHEAD 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 🙂
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ł
Masz racje Rafał, dziękuję za uwagę, już poprawiam 🙂
🙂 2 godziny móżdżenia po internecie bo nie chciało wrócić do 5 plików, ale udało się
Super 🙂
Jak by coś było nie jasne, to wal śmiało