Skip to content

Witaj w Świecie Jutra!

  • Technologie jutra
  • Sprzęt jutra
  • Aplikacje jutra
  • Programowanie
  • Księga Drogi
  • Renowacja
  • Różności
  • Archiwum
  • Autor
  • Home
  • Wszystko
  • Czym jest Git (i GitHub/GitLab)?
  • Programowanie
  • Wszystko

Czym jest Git (i GitHub/GitLab)?

Jakub Raczkowski 7 kwietnia 2024

Kontynuujemy naszą naukę narzędzi/technologii siedzących w Javie oraz dookoła niej. Ostatnim razem zajmowaliśmy się Mavenem, bez którego trudno wyobrazić sobie jakikolwiek javowy projekt. Z Gitem jest podobnie, ale bardziej – bez niego trudno sobie wyobrazić JAKIKOLWIEK projekt.

Uwaga! W tej serii zajmuję się opisowym przedstawieniem tematu, a celem jest zapoznanie z zagadnieniem w sposób luźny i zrozumiały dla nowicjusza. W związku z tym wiele elementów siłą rzeczy musi zostać pominiętych. Tych z was, którzy chcieliby się dowiedzieć więcej, zapraszam do źródeł na końcu artykułu.

Początek obecnego millenium. Właśnie wróciliście ze szkoły i najchętniej od razu ruszylibyście do kompa by raz-dwa odpalić drugie Diablo, gdzie na poziomie trudności „piekło” i w trybie „hardcore” jesteście gotowi aby w końcu stawić czoła Mefisto, bossowi trzeciego aktu. Nikt z waszych kolegów z klasy nie dotarł jeszcze tak daleko!

No, ale matka z mokrą szmatą budzi większą grozę niż sam Pan Nienawiści, zatem wpierw idziecie odrobić lekcje.

Mija kwadrans… drugi… trzeci… Powoli zbliża się godzina 18:00. Ćwiczenia z matmy już zapisane, druga forma angielskich czasowników zakuta na blachę, jeszcze tylko narysować tę mapkę na gegrę i będzie można pyknąć w diabełka!

Wtem do pokoju nieśmiało wchodzi młodszy brat. Patrząc w podłogę, cicho wymawia słowa po których nic już nigdy nie będzie takie samo:

– Co było problemem w powyższej historyjce? Kto wie?

Otóż to! Obaj bracia grali na tym samym sejwie przez co weszli sobie w paradę i problem jednego stał się automatycznie problemem tego drugiego. W skrócie: nastąpił

KONFLIKT

Taka sytuacja nie jest jedynie domeną gier, może dotknąć wielu branż, a w szczególności tych trudniących się rozwojem oprogramowania. Jeszcze pal licho, jak pracuje tam jedna, dwie, może trzy osoby, w dodatku tuż obok siebie – wtedy komunikacja działa wzorowo i każdy wie co ma robić oraz których fragmentów kodu nie powinien dotykać. Jednakże, w sytuacji gdy zespół się rozrasta, szansa na konflikty rośnie diametralnie.

Aby temu zaradzić wymyślono programy typu VCS (Version Control System) takie jak Subversion (SVN), które jednak nie były idealne – działały raczej wolno, miały problemy z rozwiązywaniem konfliktów, a na domiar złego wymagały centralnego serwera i połączenia z Internetem (wtedy to jeszcze nie było tak oczywiste jak teraz).

Gdzieś w tym samym czasie młody Linus Torvalds, student helsinskiego uniwerku, aktywnie rozwijał swoje najnowsze dziecko: Linuxa, tego pierwszego i oryginalnego. Z początku był jedynym programistą w projekcie, ale równocześnie ze zdobywaniem popularności przez ten świeży OS, pojawiali się kolejni koderzy chcący stać się częścią projektu i zaistnieć w historii jako ojcowie założyciele Linuxa.

Pomagali jak mogli, poświęcali swój czas prywatny łatając błędy i dodając nowe funkcjonalności. A tymczasem biedny Linus musiał to wszystko ogarniać samodzielnie: aktualizować, kopiować, przenosić, usuwać… W końcu nie wytrzymał i wykrzyknął frazę zarezerwowaną dotychczas jedynie dla bohaterek kina ślizganego:

Ludzie, stop! Tak nie można, żeby wszyscy na raz! Tu trzeba ustalić jakieś zasady!

Na bazie powyższego narodził się Git, którego twórcą jest właśnie Torvalds. W teorii: prosty programik odpalany z konsoli i robiący zapisy aktualnemu stanowi kodu projektu. Ale właśnie dzięki swojej prostocie okazał się „game changerem” i do dziś znajduje się w niezbędniku każdego programisty.

To właśnie jest Git – na pierwszy rzut oka nic szczególnego, ale pozory mylą.

Zatem, co ten Git potrafi?

  • z jego pomocą możemy tworzyć tzw. „commity” czyli zapisy stanu kodu projektu w dowolnym momencie, do każdego commita można szybko wracać i przeglądać zmiany
  • nazwy owych commitów są bardzo istotne, to dzięki nim możemy prześledzić kompletną historię projektu – od zera do gotowej aplikacji
  • pozwala na „rozgałęzianie” (ang. branching) projektu, przez co nad tym samym kodem mogą pracować różni programiści, pomaga w rozwiązywaniu konfliktów
  • daje wsparcie zewnętrzym repozytoriom takim jak GitHub lub GitLab dzięki którym można pokazać swój kod dowolnej osobie
A to jest GitHub – miejsce w Internecie, gdzie trzymamy nasz kod.

Tutaj warto zaznaczyć, podkreślić, pokolorować, strzelić z liścia i zasadzić kopa, aby zapamiętane zostało, że:

GIT I GITHUB TO NIE TO SAMO!

Lepiej! Można zarówno korzystać z Gita nie korzystając z GitHuba jak i na odwrót!

I w tym właśnie miejscu chciałbym płynnie przejść do tego jak zacząć używać GitHuba jeszcze nawet nie dotykając samego Gita.

Ideą GH jest to, że jest takim dyskiem, gdzie każdy może założyć osobisty profil i wrzucić własną pracę albo podejrzeć kod innych programistów. Takie przesłanie kodu może nastąpić oczywiście za pomocą jednej z komend Gita (wpisanej w konsoli albo puszczonej kliknięciem z poziomu IntelliJ), ale równie dobrze możemy po prostu „zuploadować” swój plik z poziomu strony www GitHuba.

Wracając na chwilę jeszcze do Mavena – mimo, że jest niezbędny w pracy z projektami to tak na dobrą sprawę jego ogarnięcie możemy odwlekać aż do chwili kiedy zabierzemy się za swój pierwszy samodzielny projekt. Z Gitem jest inaczej.

Kiedy już napiszemy swój pierwszy „Hello world!”, porobimy trochę ćwiczeń na takich stronach jak Hackerrank, Codewars czy Codegym i mamy tę świadomość, że programowanie jest tym co chcemy robić w życu…

…wtedy jest już ten moment kiedy należy zacząć korzystać z GitHuba*

(*) Lub GitLaba, który oferuje zbliżoną funkcjonalność. Rożnice leżą w detalach i kwestiach prawnych – np. GitHub to obecnie platforma Microsoftu, podczas gdy GitLab to projekt Open Source i każdy może sobie założyć własny serwer.

Są co najmniej 3 powody dlaczego warto się za to zabrać:

  1. „Kwadraciki” – nasze commity są obrazowane przez kwadraciki w naszym kalendarzu, który osoba z zewnątrz może sobie podejrzeć. Lubią tak robić rekruterzy, którzy sprawdzają czy jesteśmy aktywnymi programistami.
  2. Obycie z Gitem – jeśli zaczniemy się bawić tym narzędziem już na początku nauki, to kiedy ogarniemy podstawy języka równocześnie będziemy zaznajomieni z systemem kontroli wersji.
  3. Schowek – pewne elementy kodu warto sobie zachować na później aby móc na szybko do nich wracać jeśli czegoś zapomnimy. GitHub/Lab jest idealnym miejscem na taki schowek.
Gdybym zaczął używać GH równocześnie z początkami nauki Javy to teraz cały rok miałbym już na zielono.

Tym bardziej, że wrzucenie swojego pliku z kodem jest banalnie proste (na przykładzie GitHuba):

Stworzenie nowego repozytorium to kilka kliknięć.
A potem możemy już wrzucać nasze pliki z kodem. Proste!

Tylko tyle i aż tyle!

Praca z samym Gitem ze wsparciem IntelliJ też nie należy do szczególnie uciążliwych i z reguły sprowadza się do operowania kilkoma kolorowymi ikonkami na górnym panelu.

Pola zaznaczone na czerwono świadczą o połączeniu IDE z Gitem.

Na koniec pragnę jeszcze pokazać jak podłączyć swój projekt do GitHuba, z użyciem IntelliJ IDEA. Tutaj mamy właściwie dwie możliwości:

  1. Albo właśnie stworzyliśmy nowy projekt i chcemy go wrzucić na swoje konto GitHub.
  2. Albo mamy już jakiś projekt na GitHubie (swój albo cudzy, bez znaczenia) i chcemy go ściągnąć, a następnie otworzyć u siebie.

W pierwszej sytuacji musimy wpierw połączyć IDE z GitHubem. Wchodzimy w ustawienia, wyszukujemy „GitHub” i klikamy „+” aby dodać nowe konto. Logujemy się za pomocą naszego profilu GH lub tymczasowego tokenu (też wydanego przez GH). Następnie szukamy na górnym panelu zakładki „Git”, klikamy „GitHub” i wybieramy opcję „Share project on GitHub”. Tam zakładamy nowe repozytorium, potwierdzamy i gotowe.

Druga opcja jest jeszcze łatwiejsza – wystarczy wejść na pożądany projekt na stronie GH, kliknąć zielony przycisk „<> Code” i skopiować link do repozytorium. Teraz przechodzimy do IntelliJ i klikamy tak jak chcielibyśmy utworzyć nowy projekt, ale wybieramy opcję: „Project from version control”. Wklejamy skopiowany wcześniej link, potwierdzamy, czekamy chwilę aż się wszystko pobierze i gotowe.

Dzięki takiemu linkowi szybko możemy pobrać dowolny kod na naszą maszynę.

Ok, myślę, że na początek wiedza o Gicie zawarta w tym wpisie powinna wam całkowicie wystarczyć, choć to zaledwie czubek góry lodowej. Nic nie wspomnieliśmy o tym jak rozwiązywać konflikty, czy o innych niż commity sposobach interakcji (code review/pull request), ale ich nauką możecie śmiało poczekać do swojego pierwszego projektu grupowego.

Na koniec mogę wam jeszcze polecić parę dobrych źródeł do lepszego poznania Gita i jego funkcjonalności:

Prosty i krótki kurs Gita (ANG).
Kompletny kurs Gita w formie video na YT (POL)


Dziękuję za uwagę i zapraszam za kilka dni do następnego odcinka w którym omówimy podstawy baz danych SQL i NoSQL.

Tags: programming

Continue Reading

Previous: Czym jest: Maven (i Gradle)?
Next: Czym jest SQL (i NoSQL)?

Related Stories

Mageege Moon104 – test niskoprofilowego mechanika
  • Sprzęt

Mageege Moon104 – test niskoprofilowego mechanika

11 marca 2025
Przebranżowienie cz.4
  • Programowanie

Przebranżowienie cz.4

27 lutego 2025
Smartfon Jutra
  • Sprzęt

Smartfon Jutra

15 lutego 2025

Ze świata

  • Antyweb
  • Kwantowo
  • Dwóch po dwóch
Kultowe Gears of War wraca w remasterze. Szkoda, że z tymi samymi problemami
Tu nikt nie chciał szukać. Błąd! To może być kolebka życia w kosmosie
Bolą Cię plecy? Naukowcy mówią wprost, co powinieneś robić częściej
Czy Wszechświat to symulacja? Naukowcy znaleźli na to kolejny dowód
Brak ładowarki na wakacjach może Cię sporo kosztować. O tym musisz pamiętać!
Choruje jak Stephen Hawking. Chip w mózgu pozwala mu mówić (i śpiewać!)
Koniec z pestycydami. Rolnicy zastąpią je tym preparatem
Razer Kishi V3 Pro – Mobilny gamepad, który w końcu daje poczuć się jak na konsoli
Finał kultowej serii coraz bliżej. Premiera tuż za rogiem
Garmin chce pozamiatać konkurencję. Inne zegarki stracą racje bytu
Za darmo szkoda nie skorzystać. Warto się pospieszyć
Najpierw cardio, czy siłówka? Naukowcy odpowiadają
Twój smartfon potrafi więcej, niż myślisz! Te funkcje naprawdę ułatwiają życie!
WiZ HDMI Sync Box z taśmą LED - recenzja. Tanio nie znaczy źle
Netflix idzie w zaparte. Mówi że wszystko jest dobrze, ale użytkownicy nie kryją rozczarowania
Flagowy smartfon od Samsunga tuż za rogiem. Czegoś takiego jeszcze nie było
Supernowe zmieniały klimat Ziemi. Dowody są zapisane w lodzie
Klienci T-Mobile wrzuceni pod koła. Hakerzy: mamy dane 64 mln osób
Internet i telefon na firmę - szybko i tanio
To kandydat do filmu roku. Te fakty trzeba znać
Ocalić od zapomnienia
Ostatni kwant
ALH 84001 – meteoryt, o którym mówiono nawet w Białym Domu
HESS zarejestrował kosmiczny elektron o niespotykanej energii [Phys. Rev. Lett.]
Matka ciemnej materii – recenzja biografii “Vera Rubin. Życie”
Satelita, który zerwał się ze smyczy
Wiadomość od Carla Sagana do przyszłych eksploratorów Marsa
Ile najdłużej może trwać zaćmienie Słońca?
Nowa największa liczba pierwsza ma ponad 41 milionów cyfr [GIMPS]
Pulsar 4U 1820-30 wykonuje 716 obrotów na sekundę [AJ]
Ostatni z nas. Zrozumieć The Last of Us – recenzja książki
Nasze podsumowanie Comic Con Baltics 2025
Mała wielka mysz. Glorious Model O 2 mini – recenzja
Tak było na Comic Con Baltics 2025 w Wilnie (Relacja)
O przedsprzedaży Pixel 9a w samochodzie – Odcinek #122
Obejrzeliśmy Ukryty Poziom na raz – No Movie Ci
Premiera Nintendo Switch 2, seriale, i piwniczne artefakty – Odcinek #121
Ludzieee, wy tego używacie? Recenzja klawiatury Trust GXT 867 Acira
Sympatyczny mały flagowiec. Samsung Galaxy S25 – recenzja
Recenzja pionowej myszy Natec Crake 2. Się wziął gruby i nawrócił

To może cię zainteresować:

Mageege Moon104 – test niskoprofilowego mechanika
  • Sprzęt

Mageege Moon104 – test niskoprofilowego mechanika

11 marca 2025
Przebranżowienie cz.4
  • Programowanie

Przebranżowienie cz.4

27 lutego 2025
Smartfon Jutra
  • Sprzęt

Smartfon Jutra

15 lutego 2025
Czym jest Swagger?
  • Programowanie

Czym jest Swagger?

22 lipca 2024
  • Technologie jutra
  • Sprzęt jutra
  • Aplikacje jutra
  • Programowanie
  • Księga Drogi
  • Renowacja
  • Różności
  • Archiwum
  • Autor
Copyright © All rights reserved. | DarkNews by AF themes.