System Kontroli Wersji
8 godz. 23 min · Git · Full-stack i Programowanie
Mateusz KuleszaSenior Software Developer, Konsultant, TrenerInne systemy wersjonowania wymagają konfiguracji specjalnych serwerów - a z GIT wystarczy do tego twój komputer. GIT pozwoli Ci zapisywać kolejne wersje twojej pracy lub eksperymentować z różnymi zmianami. Jeśli chcesz tworzyć kopie zapasowe - w kursie zobaczysz jak tworzyć klony twojego projektu oraz jak wysyłać i pobierać aktualne zmiany pomiędzy klonami.Pierwsza sekcja pozwoli Ci zyskać pewność w samodzielnej pracy z GITem nim podejmiesz się pracy w zespole. Dowiesz się jak przygotować zestaw zmian, ignorować pliki tymczasowe, jak tworzyć migawki z opisami zmian, a następnie przeglądać i porównywać zmiany dokonane nawet miesiące temu. W kolejnej części kursu dowiesz się jak wycofywać zmiany, przywracać wcześniejsze wersje i edytować historię zmian. Zobaczysz, że w GIT “nic nie ginie”. Pokażę Ci jak możesz odzyskać pozornie utracone zmiany oraz jak naprawić historię zmian łącząc, dzieląc, a nawet zmieniając kolejność dokonanych wcześniej zmian.
Jesteś w trakcie pracy nad ważnym projektem, i nagle musisz oderwać się od pracy, by wykonać jedną, szybką poprawkę? W GIT możesz błyskawicznie przełączyć się na inną wersje projektu, lub po prostu “odłożyć na później” pliki nad którymi pracujesz i wrócić do nich kiedy tylko tego potrzebujesz. W tej części kursu zobaczysz jak pracować na gałęziach, dodawać etykiety oraz przełączać różne wersje plików. Dowiesz się jak porównywać oraz eksperymentować z plikami bez ryzyka utraty danych. Co najważniejsze - nauczysz się łączyć i dzielić wiele różnych wersji twojej pracy. Zobaczysz, jak praca na gałęziach nie tylko zwiększy Twoją swobodę i elastyczność w codziennej pracy, ale również jak gałęzie pozwalają wielu osobom na równoległą pracę na tych samych plikach bez martwienia się o utratę danych lub niespójne wersje.
W kursie dowiesz się nie tylko jak zapamiętywać zmiany, ale także jak je opisywać i oznaczać, tak, by nawet miesiące później móc łatwo odnaleźć odpowiednią wersję pliku, lub by dowiedzieć się kiedy, kto i dlaczego zmieniał dany plik. Zobaczysz jak dobre praktyki w opisywaniu zmian wspomagają pracę grupową. Dowiesz się jak pobrać lub wysłać zestaw zmian na serwer oraz jak połączyć zmiany swoje, lub zmiany otrzymane od współpracownika. Dodatkowo, zobaczysz jak bezpiecznie rozwiązać problem konfllktujących zmian w plikach lub jak przenieść zmiany z wersji do wersji. W kursie dowiesz się także jak w bardzo prosty sposób korzystać z pozornie najtrudniejszej funkcji GITa, jaką jest polecenie “rebase”. Zobaczysz jak usprawni się Twoja praca, gdy będziesz mógł w jednym kroku zbudować historię zmian. Jeśli źle zapisałeś zmiany, nie podoba Ci się historia zmian, lub po prostu chciałbyś łatwo uniknąć konfliktów - git rebase będzie Twoim nowym ulubionym narzędziem.
…zmieniło ten sam plik, trzeba jakoś te zmiany połączyć. Zobaczysz jak GIT pozwala wysłać zestaw zmian na serwer, pobrać zmiany innych osób i automatycznie dołączyć te zmiany w odpowiednich miejscach. Co jednak jeśli dwie osoby zmienią tę samą linię w pliku? W kursie dowiesz się nie tylko jakie są różne sposoby i strategie łączenia zmian, ale także jak dzięki historii będziesz wiedział dlaczego zmiana w pliku została wprowadzona. Dzięki narzędziu rebase będziesz mógł zaaplikować wszystkie zmiany w odpowiedniej kolejności i w odpowiednim miejscu.
W kursie poznasz także usługę GitHub. GitHub to nie tylko usługa udostępniająca repozytoria dla GIT - umożliwia również tzw. społecznościowe podejście do tworzenia… I to nie tylko kodu. Zobaczysz, że dzięki GitHub praca nad kodem aplikacji czy nową książką może odbywać się zespołowo. Pokażemy Ci jak publikować swoje zmiany oraz jak zgłaszać je innym do przejrzenia i połączenia z ich wersją. Poznasz także sposoby planowania pracy, przydzielania zadań i zarządzania postępem ich wykonania - wszystko na twoim koncie na portalu GitHub. Oprócz poleceń i funkcji GIT w tym kursie pokażemy Ci również, na prostych, praktycznych przykładach, typowe techniki i praktyki pracy z GIT. Podczas kursu symulujemy zespół budujący prostą stronę internetową. Co ważne, nie musisz znać HTML by skorzystać z tej części kursu! Zobaczysz jak wygląda praca z perspektywy jednej osoby, co zrobić gdy musisz przerwać pracę i przełączyć się na inne zadanie oraz jak przygotować Twoją pracę do podzielenia się nią z zespołem. Pokażemy kilka przykładów organizacji pracy. Zobaczysz prace z małym, centralnym repozytorium, a także modele pracy rozproszonej, z której korzystają duże projekty typu open-source. GIT to branżowy standard, który obowiązuje praktycznie we wszystkich firmach zajmujących się tworzeniem aplikacji lub stron internetowych. Sprawia to, że wiedza, którą zdobędziesz po przerobieniu tego kursu, bezpośrednio przełoży się na efektywność Twojej pracy oraz projekty, które tworzysz.
Kurs przygotowany został z myślą o wszystkich, którzy chcą nauczyć się najbardziej popularnego i elastycznego systemu kontroli wersji i wykorzystać go do efektywnej pracy w zespole, jak i na potrzeby indywidualnych projektów. Jest również przeznaczony dla każdego, kto pracuje z kodem źródłowym i chciałby nie tylko tego, by jego zmiany były bezpieczne, ale by jednocześnie mieć swobodę pracy na kilku równoległych wersjach kodu oraz móc swobodnie eksperymentować nie bojąc się o utratę danych. Jeśli chciałbyś dowiedzieć się jak sprawnie korzystać z Githuba oraz zrozumieć, czemu ten system jest tak chętnie stosowany przez programistów na całym świecie - to najlepsza metoda!
W tej lekcji przejdziemy już do praktycznych przykładów pracy z gitem stworzę puste repozytorium a następnie
scommitujemy w tym repozytorium plik repozytorium mogę stworzyć na dwa sposoby.
Mogę albo użyć polecenia git init wewnątrz katalogu albo w tym przypadku mam tutaj pusty katalog.
LS pierwszy commit jest nic się w środku się nie znajduje.
Mogę więc zainicjalizować nowe repozytorium także w ten sposób git init i podaje katalog w który mam utworzyć
katalog git i który ma być właśnie traktowany jako repozytorium.
Jak widzisz wykonanie tego polecenia wyświetliło mi informację że zainicjalizowano puste repozytorium
git w podkatalogu kropka git w tym naszym folderze commit.
Jeśli teraz jeszcze raz spróbuję wyświetlić ten katalog to tutaj jakby nic nie ma a dlatego że ta kropka
w nazwie katalogu git znaczy że jest on ukryty przy użyciu polecenia all jak widzisz ukryte katalogi są w ten sposób
też widoczne.
Więc przejdę do tego stworzonego katalogu czyli pierwszy commit tutaj nic nie mamy.
Dodatkowo poleceniem git status mogę sprawdzić jaki jest status tego repozytorium.
Jak widzisz mam tutaj repozytorium.
Jesteśmy na głównej gałęzi master i mamy tutaj początkowy commit i nic do scommitowania.
I właśnie tu jest informacja stwórz pliki a następnie dodaj je aby git je śledził.
Więc zróbmy to teraz.
Mam też otwarty edytor i tutaj jestem akurat w tym folderze.
Pierwszy commit już utworzę więc nowy plik dlatego po prostu witaj txt.
I tutaj umieszczę informację pierwszy plik zapisze ten plik.
Kropka.
Informuje o tym czy plik jest niezapisany więc na pewno go zapiszemy.
Wrócę do naszego wiersza poleceń i teraz polecenie.
LS jak widzisz wyświetla mi informację że w naszym katalogu znajduje się jeden plik witaj txt natomiast
git status powie mi więcej powie mi że mam jeden plik który tutaj masz informację untracked.
Czyli jest to plik który jest nie śledzony przez gita i w tej sytuacji wszystkie zmiany nie są obserwowane.
Jeśli ten plik skasujemy zostanie on utracony żeby git go obserwował i śledził zmiany w tym pliku musimy go dodać
do obserwacji.
Czyli tutaj widzisz masz polecenie git
add to track czyli git podpowiada co mamy zrobić git add i teraz git add pozwala dodać jeden lub wiele plików
mogę tu umieścić kilka plików np. witaj i jeszcze jakieś pliki mogę użyć kropki i kropka.
Cały ten katalog wszystkie pliki i katalogi i pliki znajdujące się w katalogach itd.
Ale też mogę wybrać różne pliki np. gwiazdka kropka txt.
Do tego jeszcze wrócimy.
Ja na razie dodam tylko ten jeden plik witaj txt jeszcze raz sprawdźmy po każdej komendzie git status
byśmy widzieli co się dokładnie dzieje i jak widzisz mamy różnice.
Poprzednio mieliśmy informację że pliki są nieśledzone a teraz mam informację że pliki są śledzone i są
to zmiany gotowe do scommitowania.
Czyli wszystko jest gotowe.
Żeby stworzyć nasz pierwszy commit jednak zanim to zrobię.
Zwróć uwagę że nie zapisujemy plików bezpośrednio do naszej historii zmian ale mamy właśnie to miejsce
pośrednie.
Tutaj ten status pokazuje nam pliki gotowe do scommitowania.
Tak więc każdy commit możemy sobie przygotować i dopiero gdy jesteśmy pewni że wszystko się zgadza
i pliki odpowiednio w odpowiednich wersjach są na pewno tutaj na zielono zaznaczone.
Dopiero wtedy tworzymy commit więc u nas jest wszystko OK więc mamy polecenie git commit.
I tu polecenie git commit uruchomiło mi edytor vim.
Jeśli nie skonfigurowałeś innego edytora no to to jest domyślny edytor w którym git będzie chciał edytować
twoje pliki.
I tutaj widzisz informujemy proszę umieść wiadomość opisującą twoje zmiany.
Linie zaczynające się od takiego znaku krzyżyka będą ignorowane czyli to są informacje które są tylko
dla nas do odczytu.
One nie będą zawarte w naszym commicie tylko to co umieścimy tutaj u góry w pierwszej linii czyli ja wcisnę a żeby uruchomić
na dole tryb jak widzisz insert czyli dodawanie nowych zmian i mogę wpisać wiadomość czyli wpisze na przykład tutaj
pierwszy commit
witaj txt.
To jest bardzo ważne jest żeby te wiadomości które tutaj umieszczasz opisy commitów żeby były w miarę
dokładne żeby mówiły co wykonałeś i jakie zmiany wykonałeś.
Dlatego że jak zobaczysz przyszłych lekcjach takie dobrze nazwane dobrze opisane commity pozwolą nam
bardzo łatwo zobaczyć jakie zmiany zostały wprowadzone przez kogo oraz w razie potrzeby bardzo łatwo
cofnąć się przywrócić się do wersji którą potrzebujemy dlatego że bardzo łatwo będzie znaleźć punkt w
którym jak wiemy w jakim stanie były nasze pliki.
Jakie zmiany były dokonane i będzie można bardzo łatwo cofnąć takie zmiany.
OK i wszystko się zgadza tutaj jest pierwszy commit
witaj txt wciskam Escape i wprowadzam tutaj dwukropek w czyli zapisz i q czyli quit.
No i tutaj jak widzisz mam informacje.
Git commit na naszej głównej gałęzi master utworzony został pierwszy commit i tutaj jest jego hash tak
identyfikator.
Jego skrót matematyczny i pod spodem mam też informację co zawiera ten commit jakie zmiany zawiera zawiera
zmiany w jednym pliku i zawiera dokładnie jedną dodaną linię.
Poniżej masz informacje także jaki był tryb dostępu do tego pliku zapis odczyt jest grupa 664 czyli
do zapisu i odczytu.
Jeśli było by to więcej plików więcej zmian odpowiednio mielibyśmy tutaj więcej informacji na ten temat wyczyszczę
ekran i po stworzeniu naszego commita możemy sprawdzić jak wygląda stan naszego repozytorium czyli git status
oczywiście i jak widzisz ponownie jesteśmy na głównej gałęzi.
Nie ma nic do scommitowania i nasz katalog roboczy jest znowu czysty i tak naprawdę w naszym katalogu
mamy plik witaj txt.
Ale dla gita czysty oznacza że nie ma żadnych zmian że nasz katalog jest w tej samej wersji nasze wszystkie
pliki są niezmienione mają tą samą wersję co ostatnia zapisana zmiana.
I teraz ostatnią zmianę możemy bardzo łatwo zobaczyć git log pozwala nam zobaczyć ostatnie kilka commitów
które stworzyliśmy i tu jest nasz commit jest tutaj pełne ssh czyli 40 znaków opisując ten commit.
Jak widzisz jest to autor którego skonfigurowałem.
Nie muszę za każdym razem się podpisywać pod commitem wystarczy że mam ustawioną tutaj w git config
moje imię nazwisko i tutaj adres e-mail widzę że brakuje tutaj nazwiska i data kiedy było utworzone.
No i tutaj pierwszy commit i popełniłem dwa błędy.
Po pierwsze przy autorze zabrakło mi nazwiska czyli nieprawidłowo ustawiłem config a po drugie wpisując
wiadomość tutaj popełniłem prostą literówkę.
Zamiast pierwszy napisałem piewszy czyli tutaj brakuje r.
W kolejnej lekcji pokażę ci jak w prosty sposób możesz poprzedni commit który utworzyłeś poprawić
i np. poprawić tutaj autora czy poprawić jego opis.
Do zobaczenia w kolejnej lekcji.