Witam Cię ponownie!
Jeśli chcesz rozwijać się jako programista, nie możesz ignorować Git'a. Jest on nieodłączną częścią świata programowania, a jego znajomość jest kluczowa dla współpracy z innymi programistami. Bez tego narzędzia trudno będzie ci osiągnąć sukces w branży.
Od początku mojej nauki programownia przeszedłem wiele różnych tematów, od podstawowych koncepcji po bardziej zaawansowane zagadnienia. Jednakże, kiedy dotarłem do Git'a, początkowo nie mogłem go zrozumieć. Wydawał mi się zawiły i skomplikowany. Jednak po poświęceniu czasu na zgłębienie tego tematu, wreszcie zrozumiałem jego znaczenie.
Mam nadzieję, że dzięki temu wpisowi będziesz mógł przezwyciężyć własne trudności związane z Git'em i zrozumiesz jego wartość w pracy programisty.
Czy jest repozytorium kodu?
Co znaczy to magiczne słowo?
Repozytorium, czyli tzw. repo to po prostu nic innego jak miejsce do przechowywania Twojego kodu lub plików, nad którym aktualnie pracujesz. Repozytorium jest zazwyczaj zarządzane przez systemy kontroli wersji, takie jak chociażby sławetny Git. Repo może być hostowane na platformach takich jak GitHub, czy też GitLab.
Repozytorium może być publiczne lub prywatne:
😼 public repository - dostępne dla wszystkich i może być używane do udostępniania Twojego kodu źródłowego (open source)
😼 private repository - ograniczone dostępem, co oznacza, że tylko uprawnione osoby mają dostęp do jego zawartości
Repozytorium może być również wewnętrzne i zewnętrze. O tym opowiemy sobie zaraz.
Git - system kontroli wersji
Git to po prostu rozproszony system kontroli wersji. Tak, wiem. Też nic mi to nie mówiło 😁 Po kolei…
Git umożliwia śledzenie zmian w kodzie źródłowym podczas rozwoju oprogramowania. Pozwala różnym programistom współpracować nad projektem, zapewniając mechanizmy do zarządzania i scalania zmian w kodzie. Git zapewnia elastyczność, skuteczność i szybkość w zarządzaniu kodem, umożliwiając programistom pracę niezależnie na różnych gałęziach, a następnie scalanie zmian w jedną wspólną wersję.
Struktura Gita:
1. Working Directory (Katalog roboczy)
To lokalny folder na Twoim komputerze, który zawiera kopię projektu Git. W tym katalogu znajdują się dane, nad którymi pracujesz. Wszystkie zmiany, które dokonujesz, takie jak dodawanie, usuwanie lub modyfikowanie plików, odbywają się w właśnie w Working Directory. To Twoja piaskowanica, w której trzymasz swoje zabawki.
2. Staging Area (Obszar przygotowawczy)
To pośredni obszar pomiędzy Working Directory, a następnym obszarem, którym jest Repository. Taki sektor buforowy, w którym zatwierdzasz wszystkie dokonywane przez Ciebie zmiany w danych (commit) i przygotoujesz je do tzw,. wypchnięcia (push) do Repository
3. Repository (Repozytorium)
Repo to miejsce, w którym Git przechowuje wszystkie wersje danych, historię zmian oraz informacje o gałęziach (branchach) i commitach. Może istnieć w formie lokalnego repozytorium na Twoim komputerze lub zdalnego repozytorium na serwerze, np. GitHubie. Repo pomaga Ci śledzić i zarządzać całym projektem oraz współpracować z innymi programistami w systemie Git
Zapamiętaj sobie te pojęcia
Repozytorium wewnętrzne - znajduje się wewnątrz, na Twoim komputerze
Repozytorium zewnętrzne - poza Twoim komputerem, np. na platformach takich jak GitHub.
Working Directory - katalog, gdzie dokonujesz zmian w plikach.
Staging Area - pośredni obszar, gdzie wybierasz zmiany zatwierdzania
Repository - miejsce, gdzie Git przechowuje pełną historię projektu
Twój nowy przyjaciel GitHub
GitHub to internetowa platforma do zarządzania kodem, która umożliwia programistom przechowywać oraz udostępniać dane, a także współpracować nad rozwojem oprogramowania
Platforma udostępnia wiele funkcji, które są bardzo przydatne w pracy nad kodem:
🚀 pozwala na kontrolę wersji kodu
🚀 umożliwiaja śledzenie zmian podczas pracy
🚀 ułatwia wprowadzanie poprawek
🚀 czyni współpracę zespołową bardziej wydajną
GitHub zapewnia również narzędzia do zarządzania zgłoszeniami błędów i integracji z innymi narzędziami programistycznymi, np. InteliJ IDEA. GitHub działa na zasadzie repozytoriów, gdzie każdy projekt ma swoje miejsce do przechowywania danych.
Jest też coś takiego jak GitHub Copilot, czyli narzędzie oparte sztucznej inteligencji ułatwiające programistom pracę, ale to już temat na osobny wpis, do którego mi jeszcze daleeeeeeko…
Branch - kolejne ważne pojęcie
Jeśli spytasz mnie jak wyobrażam sobie w głowie Gita i jego elementy, to porównałbym to do solidnego, starego dębu. Tak, do drzewa. I tak się właśnie składa, że tematem tego akapitu będzie branch, czyli po ang. gałąź.
W dużym skrócie, jeśli pracujesz nad kodem zapewne masz swoją fundamentalną wersję aplikacji. W tej wersji wprowadzamy pewne usprawnienia, modyfikujemy kod, dodajemy elementy, testujemy. Jedym słowem rozwijamy nasz program.
Teraz wyobraź sobie następującą sytuację. Jak to zapewne często bywa, nagle pojawia Ci się w głowie rewolucyjny pomysł, który może usprawnić działanie Twojej apki! Lecisz do kompa, poprawiasz kod i … BACH!
Coś się wysypało i kod się nie kompiluje. Co teraz? Jeśli to tylko kilka linijek do naprawy to luz. Wprowadzasz korektę, wracasz do punktu wyjścia i po problemie. Gorzej, jeśli tak zmodyfikowałeś swój kod, że wykrzaczenie jest przepotężne, a powrócenie do stanu przed awarii zajmie Ci grube godziny.
I tutaj na białym koniu wjeżdza branch.
Branch w systemie kontroli wersji to odgałęzienie od głównej wersji kodu (zazwyczaj od gałęzi głównego o nazwie "master" lub "main"), które umożliwia niezależną i równoległą prace nad funkcjonalnością programu. To miejsce, w którym możesz sobie poekperymentować bez obawy, że Twoje igraszki skończą się totalnym wykrzaczeniem kodu.
Mamy zatem fundament drzewa, pień (master), od którego odchodzą poszczególne gałęzie, na których wprowadzamy nowe rozwiazania, bez obawy, że starcimy to nad czym długo pracowaliśmy. Jeśli przetestujemy funkcjonalość i wszystko będzie działać jak należy, wtedy łączymy gałąź z pniem i wprowadzamy nowe usprawnienie do kodu głównego. Taki transfer danych to tzw. merge.
Po co Ci ten cały Git?
No właśnie. Tyle dodatkowej roboty, jakby mało było nauki programowania… Coś w tym jednak musi być, skoro cały świat kodowania obraca się wokół GitHuba. Dla rekruterów jest to jedna z pierwszych możliwości zorientowania się, czy w ogóle jest sens zapraszać Cię na rozmowę o pracę. To właśnie dzięki Gitowi będziesz mógł dzielić się swoją pracą nad kodem z całym światem IT i umieszczać swoje projekty na GitHubie. Te projekty, które będzie w przyszłości oglądał jakiś człowiek z HR.
Jakie są główne funkcje Gita?
😼 Kontrola wersji
Taki backup kodu. Możesz testować różne alternatywne rozwiazania, których nie wykonujesz bezpośrednio na głównym kodzie, ale na kopi tego kodu w osobnych branchach. W tym przypadku masz pewność, że jeśli spartolisz robotę, to główny kod pozostaje bez zmian. Umożliwia Ci to zachowanie historii i przywracanie wcześniejszych wersji plików.
😼 Rozwiązywanie konfliktów
Pomaga rozwiązywać konflikty, które mogą wystąpić, gdy w jednym czasie, w tym samym obszarze kodu zostały dokonane jakieś zmiany (np. jeśli kilku programistów majstruje jednocześnie przy kodzie)
😼 Łączenie
Jeśli chcemy do kodu zaimplementować nową funckjonaloność, tworzymy nowego brancha i tam testujemy nowe rozwiązanie. Jeśli funckjonalność będzie już gotowa, łącznymy ją z branchem głównym master
😼 Praca lokalnie:
Git przechowuje pełną historię projektu na Twoim komputerze, co umożliwia pracę offline i szybki dostęp do historii zmian
Jakie są główne funkcje Githuba?
W skrócie, Git to narzędzie do kontroli wersji kodu, które pozwala śledzić zmiany w kodzie, tworzyć branche i łączyć zmiany. GitHub natomiast to platforma, która udostępnia zdalne repozytoria Git oraz inne narzędzia, umożliwiające współpracę z innymi programistami, udostępnianie projektów publicznie i integrowanie się z różnymi narzędziami.
😼 Przechowywanie kodu
GitHub to platforma, która udostępnia zdalne repozytoria Git, gdzie można przechowywać kod
😼 Współpraca
GitHub oferuje narzędzia do współpracy zespołowej nad projektem. Można zapraszać innych programistów do projektu, recenzować kod, dodawać uwagi i łączyć zmiany w formie tzw. "Pull Requestów". Platforma ułatwia udostępnianie projektów publicznie
😼 Śledzenie błędów
Śledzenie błędów i zgłaszanie problemów związanych z projektem. Można tworzyć tzw. "Issues", gdzie opisuje się napotkane problemy, dyskutuje na ich temat i przypisuje zadania do odpowiednich osób
😼 Integracja z narzędziami
GitHub posiada mozliwość integracji z różnymi narzędziami i usługami, które ułatwiają proces wdrażania, testowania i automatyzacji
Dość gadania, czas na praktykę!
Zapoznaj się dokładnie z całą powyższą treścią i zainstaluj Gita na swoim koncie. Następnie załóż konto na GitHubie. Jeśli nie wiesz jak to zrobić, poniżej znajdziesz zakładkę z kotkiem, gdzie znajdziesz instrukcję jak to wszystko zrobić. W kolejnym wpisie stworzysz swoje pierwsze lokalne repozytorium oraz wyślesz swój projekt na repozytorium zdalne na Githubie!
Instalacja GitaŚledź moją aktywność na LinkedIn
Zapisz się na mój newsletter
Popełnianie błędów jest rzeczą naturalną zanim perfekcyjnie opanujemy nowy materiał. Jeśli wyłapałeś jakieś nieprawidłowości w moim tekście, proszę daj mi znać mailowo. Jeśli masz jakieś sugestie lub pytania, proszę napisz do mnie wiadomość: kuba@javampokaze.pl