Nie bój się gita

Git dla początkujących może wydawać się zbędnym narzędziem do nauki na samym starcie. Nic bardziej mylnego. Pomijając fakt, że gita wymaga prawie każdy pracodawca na rynku, to narzędzie to daje ogromne korzyści. Jakie?

W swoich pierwszych projektach nie używałem gita. Myślałem, że go nie potrzebują, bo są mało profesjonalne. Dziś wiem, że jakbym uczył się raz jeszcze programowania, to byłaby to pierwsza rzecz, której podstaw bym się nauczył. Bo żeby posługiwać się gitem, nie potrzeba znać od razu masy wyrafinowanych i zaawansowanych komend. Na dobrą sprawę, wystarczające będzie używanie ich kilku - i to naprawdę podstawowych. Dopiero z czasem, stopniowo uczymy się go w sposób zaawansowany.

Co to jest git?

Jest to system kontroli wersji, który w głównej mierze ma za zadanie ułatwić programistom i użytkownikom kodu pracę nad kodem. Dzięki gitowi i generalnie systemom kontroli wersji, możemy oglądać zmiany w kodzie na przestrzeni historii projektu, przywracać i zmieniać wersje projektu (kodu), tworzyć swojego rodzaju backup (aczkolwiek wiem, że nie jest to specjalnie do tego celu dedykowane narzędzie), dzielić się kodem w sposób łatwy, szybki i przejrzysty, tworzyć profesjonalną strukturę pracy nad kodem w przestrzeni czasu i wiele więcej. Dodatkowo oprogramowanie pracujące na gicie, np. GitLab lub GitHub pozwalają na niesamowite integracje z projektem, których przykład przedstawię w dalszej części tekstu.

Dlaczego nie używanie gita to błąd?

Wspomniałem już, że przy pierwszych projektach nie używałem gita. Było to spowodowane jakąś niechęcią lub obawą przed tym narzędziem. Nie wiem, co to dokładnie było. Pamiętam jednak moment, w którym uświadomiłem sobie, że nie używanie go było głupotą. Pracowałem wtedy nad pewnym projektem, w którym użyłem jakąś komendę z npm, która spowodowała, że utraciłem większość pracy, nad którą pieczołowicie pracowałem przez ostatnie dni. Po stracie, nie było już sposobu na przywrócenie plików. Można sobie tylko wyobrazić moją ówczesną frustrację. Po tej sytuacji, postanowiłem, że zaprzyjaźnię się z gitem na dobre i że zawsze będę go wykorzystywał do moich projektów. Wyszło mi to tylko na dobre.

Oprócz posiadania backupu, używając gita od początku historii, wprawiamy się w nawyk. Rozwijamy u siebie umiejętności dobrego organizowania struktur projektowych oraz działamy naprawdę małym kosztem nakładu pracy. Uważam, że gita nie warto uczyć się na "pałę", tylko rozwijać tą umiejętność wraz z nauką programowania. To sprawia, że nawet nie zauważamy, kiedy stajemy się jego zaawansowanym użytkownikiem.

Korzyści płynące z używania systemu kontroli wersji

Posiadanie backupu to nie jedyna zaleta używania systemu kontroli wersji, takiego jak git. Powiedziałbym nawet, że jest to jeden z podrzędnych aspektów. Do kopii zapasowej w poważnych i komercyjnych projektach stosuje się oprogramowanie do tego dedykowane, a git do nich nie należy. Jednak na potrzeby projektów do szuflady i z perspektywy self-developmentu jest aż zanadto do tego wystarczający.

Dzięki gitowi możemy tworzyć historię projektu. Historię reprezentują tzw. commity, czyli takie punkty w przestrzeni czasu wykonane przez programistę, które możemy podejrzeć w dowolnym momencie i sprawdzić bądź porównać ówczesny kod. Co więcej - możemy przywrócić nasz kod do tej wersji z commita, by na przykład przywrócić na chwilę usuniętą funkcjonalność strony.

zdjęcie tematyczne
przykładowa struktura historii repozytorium

Git umożliwia również tworzenie tzw. branchy (gałęzi). Na przykład, kiedy dostaliśmy zadanie stworzenia nowej funkcjonalności do strony. Racjonalnym wtedy byłoby nie pracować na masterze (czyli gałęzi głównej repozytorium), tylko stworzyć do tego celu nowego brancha, którego spokojnie połączymy z masterem, kiedy będziemy pewni, że wszystko działa jak należy. To powszechna metodyka działania programistów i współpracy między nimi, a więc dzielenie developmentu na gałęzie.

Podstawy pracy z gitem

Oczywiście powyższe zalety i korzyści możemy wykorzystywać lokalnie lub zdalnie, co jest samo w sobie zaletą. Jeżeli nie chcemy od razu tworzyć repozytorium (tak nazywa się projekt utrzymany w gicie), możemy to zrobić później. Istotnym jest, by stworzyć repozytorium lokalnie (i to na początku życia projektu). Wtedy, nawet kiedy stworzyliśmy je tylko na naszym komputerze, za pomocą jednej komendy możemy wysłać je na zdalne repozytorium poprzez takie narzędzia do obsługi gita, jak: GitLab, GitHub, BitBucket. Do stworzenia projektu lokalnie używamy następujące polecenie:

git init

Żeby użyć tej komendy, potrzebujemy zainstalować gita na naszym systemie. Na Windowsie i Macu pobieramy plik z oficjalnej strony gita. Na linuksie poprzez apt get. Po inicjacji projektu nasz projekt korzysta z gita.

Podstawowe komendy w gicie

Po pierwszych pracach nad kodem przychodzi czas na dodanie zmian w plikach do tzw. staging area - jest to obszar, do którego dodajemy nasze pliki, dla których chcemy śledzić zmiany w gicie. Robimy to za pomocą:

git add .
git add [nazwa pliku]

W pierwszym przypadku dodajemy wszystkie pliki istniejące w repozytorium, chyba że oznaczyliśmy je w pliku .gitignore, w którym wpisujemy pliki bądź katalogi, których nie chcemy z jakichś powodów commitować. A propos commitów, tworzymy je następująco:

git commit
git commit -m 'initial commit'

W ten sposób tworzymy pierwszego commita w projekcie - będzie on widoczny już zawsze w historii naszego projektu. Wersja z flagą -m pozwala na szybkie wpisanie treści commita. Polecam ten sposób ich tworzenia.

Aby wysłać kopię lokalnego repozytorium do zdalnego repozytorium na przykład na GitHubie, używamy następującego polecenia:

git push [link do repo] master

Gdzie link do repo oznacza link do zdalnego repozytorium, które musimy wcześniej utworzyć ręcznie na stronie GitHuba lub innego serwisu opartego na gicie. Master to nazwa brancha - domyślnym i głównym branchem każdego repozytorium to właśnie master.

Kilka porad odnośnie gita

Na dobrą sprawę, opisane przeze mnie wyżej zagadnienia to wystarczająca ilość wiedzy, żeby zacząć pracę z gitem. Zaczynamy od tworzenia małych projektów, zawsze inicjując repozytorium lokalnie, a później wysyłając je na zdalną wersję. Z czasem, zaczynamy pracować na gałęziach, by każdy z kolejnych projektów posiadał coraz to lepszą historię commitów. Aż w końcu trafiamy na projekt z prawdziwego zdarzenia, gdzie współpraca i integracją z gitem jest wręcz koniecznością - uczy nas to podejścia, z jakim przyjdzie nam pracować w pierwszej pracy programisty. Bo git i generalnie systemy kontroli wersji nie są przeznaczone tyko do webdevelopmentu. Są one wykorzystywane przy - z pełną powagą tego zdania - wszystkich językach programowania świata.

Jeśli jesteś zainteresowany/na dalszym rozwojem w pracy z gitem, to odsyłam do oficjalnej jego dokumentacji, jak również do masy kursów poruszających tą tematykę. Od siebie dodam, że na pewno na blogu pojawi się niejeden temat odnośnie gita, a więc stay sharp! A już teraz zapraszam cię na Podstawowe pojęcia w gicie.

© Damian Kalka 2021
Wszelkie prawa zastrzeżone