1/50
Witaj na Wykładzie 2!
  • Poznaliśmy już podstawy pracy z Gitem na lokalnym komputerze.
  • Dziś wyjdziemy „na zewnątrz” i nauczymy się korzystać z GitHuba.
  • Zrozumiemy, dlaczego posiadanie konta na tej platformie jest kluczowe w branży IT.
  • Nauczymy się, jak bezpiecznie przesyłać swój kod do chmury.
  • Poznamy różnice między pracą lokalną a pracą w ekosystemie online.
  • Przygotujemy profesjonalne fundamenty pod Twój pierwszy projekt publiczny.
Slide 1

Zanim GitHub podbił świat programistów, istniały już wcześniejsze systemy kontroli wersji, takie jak CVS i Subversion. Git został stworzony w 2005 roku przez Linusa Torvaldsa, aby obsłużyć rozwój jądra Linux, i szybko stał się standardem dzięki swojej wydajności i modelowi rozproszonemu. GitHub, założony trzy lata później przez Toma Preston-Wernera, Chrisa Wanstratha i PJ Hyetta, wykorzystał moc Gita i dodał warstwę społeczną oraz graficzny interfejs webowy. Dziś platforma należy do Microsoftu i jest największym na świecie repozytorium kodu źródłowego, goszcząc ponad sto milionów projektów. Warto zrozumieć, że sukces GitHuba wynika nie tylko z samego hostingu, ale przede wszystkim z mechanizmów współpracy, które zrewolucjonizowały sposób tworzenia oprogramowania.

Ekumeniczny charakter platformy sprawia, że znajdziesz tam zarówno proste skrypty jednego autora, jak i zaawansowane frameworki rozwijane przez tysiące ludzi na całym świecie. Środowisko akademickie również chętnie korzysta z GitHuba do publikacji prac badawczych oraz udostępniania danych i kodów źródłowych związanych z publikacjami naukowymi. To właśnie ta różnorodność i otwartość sprawiają, że znajomość GitHuba jest dziś jedną z fundamentalnych umiejętności każdego programisty, niezależnie od wybranej ścieżki kariery.

2/50
Co to jest właściwie ten GitHub?
  • To największa na świecie platforma hostingowa dla repozytoriów Git.
  • Służy do przechowywania kodu źródłowego i zarządzania projektami IT.
  • Działa w chmurze, umożliwiając dostęp do Twojej pracy z każdego miejsca na Ziemi.
  • Jest centrum współpracy dla milionów programistów i projektów Open Source.
  • Zapewnia interfejs graficzny, który ułatwia zarządzanie tym, co robi Git w konsoli.
  • GitHub to nie tylko kod – to także dokumentacja, zgłaszanie błędów i planowanie pracy.
Slide 2

GitHub jest tylko jedną z wielu platform hostingowych dla repozytoriów Git, choć bez wątpienia najpopularniejszą. Konkurencyjne serwisy, takie jak GitLab czy Bitbucket, oferują podobne funkcje, ale różnią się podejściem do niektórych aspektów — GitLab kładzie duży nacisk na wbudowane narzędzia CI/CD i prywatne instance, podczas gdy Bitbucket integruje się ściśle z ekosystemem Atlassiana. Wybór platformy często zależy od kultury organizacyjnej firmy i konkretnych wymagań projektowych, jednak znajomość GitHuba otwiera najwięcej drzwi w branży IT ze względu na jego powszechność i bogaty ekosystem integracji.

GitHub oferuje również zaawansowane funkcje wykraczające poza podstawowy hosting, takie jak GitHub Packages do przechowywania paczek oprogramowania, GitHub Codespaces umożliwiający programowanie w chmurze bezpośrednio z przeglądarki oraz GitHub Copilot wspomagający pisanie kodu przy użyciu sztucznej inteligencji. Platforma stale ewoluuje, wprowadzając nowe narzędzia, które automatyzują i usprawniają codzienną pracę programistów. Zrozumienie pełnego potencjału GitHuba to proces, który wykracza poza niniejszy wykład, ale już dziś stawiasz pierwszy krok w tym kierunku.

3/50
Dlaczego musisz tam być?
  • Twoje konto na GitHubie to Twoje cyfrowe portfolio.
  • Pracodawcy często zaczynają rekrutację od przejrzenia Twoich repozytoriów.
  • Pozwala uczyć się od najlepszych przez analizę kodu znanych bibliotek i narzędzi.
  • Gwarantuje bezpieczeństwo – jeśli komputer ulegnie awarii, kod czeka na GitHubie.
  • Umożliwia łatwą współpracę z innymi studentami oraz programistami z całego świata.
  • Większość narzędzi IT (IDE, serwery, automatyzacja) łączy się bezpośrednio z GitHubem.
Slide 3

Obecność na GitHubie to dziś nie tylko kwestia wygody, ale wręcz konieczność zawodowa dla każdego, kto poważnie myśli o karierze w branży technologicznej. Rekruterzy i menedżerowie techniczni coraz częściej pomijają tradycyjne CV i zamiast tego przeglądają aktywne repozytoria kandydatów, szukając dowodów na rzeczywiste umiejętności programistyczne. Twój profil na GitHubie stanowi żywe portfolio, które pokazuje styl pisania kodu, znajomość narzędzi, umiejętność dokumentowania pracy oraz zaangażowanie w projekty zespołowe. Regularne commity i udział w dyskusjach technicznych budują wiarygodność i świadczą o Twojej pasji do programowania.

Poza korzyściami czysto zawodowymi, GitHub oferuje niezrównany dostęp do wiedzy — możesz czytać kod źródłowy najpopularniejszych bibliotek, analizować architekturę znanych projektów i uczyć się od najlepszych programistów na świecie. Społeczność open source na GitHubie to żywy organizm, w którym możesz znaleźć mentorów, współpracowników, a nawet przyjaciół dzielących Twoje zainteresowania technologiczne. Im wcześniej zaczniesz aktywnie uczestniczyć w życiu tej platformy, tym szybciej zbudujesz swoją pozycję w środowisku programistycznym.

4/50
Git vs GitHub – najważniejsza różnica
  • Git to narzędzie (program), które instalujesz lokalnie na komputerze.
  • GitHub to portal (serwis), który działa w Internecie.
  • Git zarządza historią zmian; GitHub ją prezentuje i przechowuje kopie.
  • To jak aparat fotograficzny (Git) a Instagram (GitHub).
  • Aparatem robisz zdjęcia lokalnie; na Instagramie je publikujesz i udostępniasz.
  • Pamiętaj: możesz używać Gita bez GitHuba, ale GitHub bez Gita nie ma sensu.
Slide 4

Rozróżnienie między Gitem a GitHubem to jedna z najważniejszych koncepcji, jaką musi zrozumieć każdy początkujący programista. Git jest systemem kontroli wersji, który działa w pełni lokalnie na Twoim komputerze i nie wymaga połączenia z internetem — możesz tworzyć commity, przeglądać historię i cofać zmiany bez dostępu do sieci. GitHub z kolei jest chmurową platformą hostingową, która dodaje warstwę zdalną i społeczną do Twoich lokalnych repozytoriów, umożliwiając synchronizację, współpracę i publikację kodu w sieci. Analogia do aparatu fotograficznego i Instagrama jest trafna, ale warto dodać, że Git daje Ci również zaawansowane możliwości manipulacji historią, których nie znajdziesz w innych systemach CVS.

Istnieją również alternatywne serwisy zdalne, które możesz wykorzystać z Gitem — własny serwer z gołym protokołem Git, GitLab Self-Hosted czy nawet zwykły dysk sieciowy. Różnica polega na tym, że GitHub dostarcza gotowe narzędzia do przeglądania kodu, zarządzania zgłoszeniami i automatyzacji procesów, których samodzielna konfiguracja wymagałaby znacznego wysiłku. Umiejętność oddzielania tych dwóch warstw — lokalnej i zdalnej — jest kluczowa dla sprawnego poruszania się w świecie nowoczesnego programowania.

5/50
Kluczowe funkcje GitHub
  • Hosting repozytoriów – miejsce na Twoje pliki i ich pełną historię.
  • Pull Requests – mechanizm zgłaszania i przeglądania zmian w kodzie.
  • Issues – system śledzenia błędów, zgłoszeń i pomysłów.
  • GitHub Actions – automatyzacja testów i wdrażania programów (CI/CD).
  • GitHub Pages – darmowy hosting dla Twoich prostych stron WWW.
  • Społeczność – możliwość "gwiazdkowania" projektów (stars – polubienia) i śledzenia autorów.
Slide 5

GitHub Actions to jedno z najpotężniejszych narzędzi dostępnych na platformie, umożliwiające definiowanie dowolnych przepływów pracy bezpośrednio w repozytorium. Dzięki plikom YAML umieszczonym w katalogu .github/workflows możesz automatyzować testowanie, budowanie i wdrażanie aplikacji na różnych systemach operacyjnych i w różnych wersjach języków programowania. Mechanizm ten całkowicie eliminuje potrzebę korzystania z zewnętrznych serwerów CI/CD, takich jak Jenkins czy Travis CI, w przypadku większości typowych projektów. Actions oferuje również gotowe akcje z rynku, które możesz łączyć w złożone łańcuchy, tworząc kompletny pipeline developerski bez pisania ani jednej linijki kodu konfiguracyjnego.

Kolejną zaawansowaną funkcją są GitHub Environments, które pozwalają zarządzać wdrożeniami na różnych etapach — od developerskiego przez staging aż po produkcję. Mechanizm ten integruje się z regułami ochrony gałęzi i wymaga recenzji Pull Request, zapewniając, że kod trafia na produkcję tylko po spełnieniu wszystkich wymaganych kryteriów jakości. Zaawansowane funkcje bezpieczeństwa, takie jak Dependabot i secret scanning, dodatkowo chronią Twój kod przed podatnościami zależności i przypadkowym wyciekiem danych uwierzytelniających.

6/50
Plan na dziś: Od zera do dewelopera
  • Przejdziemy proces zakładania konta i jego konfiguracji.
  • Zobaczymy, jak stworzyć profesjonalne repozytorium z README i licencją.
  • Nauczymy się synchronizować nasz komputer z kontem online.
  • Skonfigurujemy bezpieczny dostęp przy użyciu tokenów i SSH.
  • Zrobimy pierwszy "push" – publikację Twojego kodu w sieci.
  • Poznamy zasady „higieny” pracy, czyli co dodawać do Gita, a czego unikać.
Slide 6

Droga od początkującego do samodzielnego programisty wymaga systematycznego budowania nawyków i stopniowego poznawania coraz bardziej zaawansowanych koncepcji. Ten wykład został zaprojektowany tak, aby przeprowadzić Cię przez wszystkie kluczowe etapy — od założenia konta, poprzez konfigurację bezpiecznego dostępu, aż po pierwszą udaną publikację kodu w chmurze. W branży IT ceni się nie tylko umiejętność pisania kodu, ale także sprawne posługiwanie się narzędziami i platformami, które umożliwiają efektywną pracę zespołową. Dzisiejszy materiał stanowi solidny fundament, na którym w kolejnych częściach kursu zbudujemy bardziej zaawansowane umiejętności, takie jak zarządzanie gałęziami i rozwiązywanie konfliktów.

Warto pamiętać, że każde nowe narzędzie, którego się uczysz, wymaga czasu na oswojenie i włączenie do codziennej praktyki. Nie zniechęcaj się, jeśli na początku komendy Git wydają się skomplikowane lub proces konfiguracji sprawia trudność — to normalny etap nauki, przez który przechodzą wszyscy programiści. Systematyczność i praktyka są ważniejsze niż jednorazowe zrozumienie całego materiału, dlatego zachęcam do samodzielnego eksperymentowania i powtarzania omówionych kroków.

7/50
Zakładanie konta na GitHub
  • Wchodzimy na github.com i klikamy Sign Up.
  • Używaj profesjonalnego adresu e-mail (najlepiej ten, którego będziesz używać w pracy/nauce).
  • Wybierz nazwę użytkownika (Username), która dobrze brzmi w CV.
  • Potwierdź adres e-mail – jest to niezbędne do pełnego korzystania z funkcji GitHub.
  • Wybierz darmowy plan (Free) – oferuje wszystko, co potrzebne początkującym studentom.
  • Uzupełnij swój profil – dodaj zdjęcie, krótki opis "bio" i technologię, której się uczysz.
Slide 7

Zakładając konto na GitHubie, warto od razu pomyśleć o długoterminowym bezpieczeństwie dostępu. Po rejestracji pierwszą czynnością powinno być włączenie uwierzytelniania dwuskładnikowego, które znacząco utrudnia przejęcie konta w przypadku wycieku hasła. GitHub obsługuje kilka metod 2FA — aplikacje uwierzytelniające, klucze bezpieczeństwa FIDO oraz powiadomienia SMS, a od niedawna także passkeys, które zapewniają najwyższy poziom bezpieczeństwa przy jednoczesnej wygodzie użytkowania. Kody odzyskiwania, które otrzymasz przy konfiguracji 2FA, należy przechować w bezpiecznym miejscu, ponieważ bez nich możesz trwale utracić dostęp do swojego konta.

Wybór nazwy użytkownika to decyzja, którą warto dobrze przemyśleć, ponieważ późniejsza zmiana jest możliwa, ale może powodować komplikacje związane z przekierowaniami i klonowaniem istniejących repozytoriów. Profesjonalna nazwa, zazwyczaj zawierająca Twoje imię i nazwisko lub ich kombinację, buduje zaufanie i ułatwia identyfikację w środowisku zawodowym. Pamiętaj również, że GitHub nie jest miejscem na konta tymczasowe czy testowe — Twoje konto będzie Ci towarzyszyć przez całą karierę zawodową, dbaj o nie od samego początku.

8/50
Twój Profil – Twoja wizytówka
  • Strona profilowa pokazuje Twoje "Contributions" – zielone kwadraciki aktywności.
  • Regularne commity budują zaufanie u potencjalnego pracodawcy.
  • Możesz przypiąć (Pin) najważniejsze projekty, którymi chcesz się pochwalić.
  • Wypełnij informację o uczelni i lokalizacji – to ułatwia networking.
  • Pamiętaj o linku do swojego LinkedIn lub bloga technicznego.
  • Profil na GitHub to dla wielu rekruterów ważniejszy dokument niż tradycyjne CV.
Slide 8

Profil na GitHubie to znacznie więcej niż tylko wizytówka — to dynamiczny dziennik Twojej aktywności programistycznej dostępny publicznie dla całego świata. Wykres aktywności, popularnie zwany zielonym kwadratem, pokazuje Twoje commity z ostatniego roku i jest często pierwszym miejscem, na które patrzą rekruterzy odwiedzający Twój profil. Warto jednak wiedzieć, że nie wszystkie commity są liczone jednakowo — tylko te wykonane na domyślnej gałęzi lub w ramach Pull Requestów, które trafiły do gałęzi domyślnej, są uwzględniane na wykresie. System ten motywuje do regularnej pracy i publikowania ukończonych fragmentów kodu, a nie pozostawiania porzuconych gałęzi.

Funkcja profilowego README, uruchamiana poprzez utworzenie repozytorium o nazwie identycznej z nazwą użytkownika, pozwala na wyświetlenie spersonalizowanej treści na stronie głównej profilu. Możesz tam umieścić informacje o swoich umiejętnościach, linki do portfolio, statystyki GitHub generowane dynamicznie oraz ikony technologii, które znasz. Dobrze zaprojektowany profil README to jeden z najprostszych sposobów na wyróżnienie się i zrobienie dobrego pierwszego wrażenia.

9/50
Nawigacja po interfejsie
  • Dashboard – główna strona po zalogowaniu; tu widzisz aktywność innych.
  • Repositories – Twoja lista projektów.
  • Explore – miejsce do odkrywania nowych, ciekawych bibliotek.
  • Marketplace – dodatki i integracje ułatwiające pracę.
  • Settings – tu zmienisz hasła, klucze dostępu i wygląd (np. tryb ciemny).
  • Z menu po prawej stronie masz szybki dostęp do swoich projektów i gistów.
Slide 9

Interfejs GitHuba został zaprojektowany z myślą o wydajnej nawigacji, a znajomość skrótów klawiszowych może znacząco przyspieszyć codzienną pracę. Naciśnięcie klawisza ? na dowolnej stronie wywołuje okno z pełną listą dostępnych skrótów, a kombinacje takie jak t (szybkie wyszukiwanie plików), w (przełączanie gałęzi) czy . (uruchomienie edytora VS Code w przeglądarce) są niezwykle przydatne w codziennej pracy. GitHub oferuje także Command Palette dostępną przez Ctrl+K lub Cmd+K, która pozwala na szybkie wykonywanie akcji bez konieczności opuszczania klawiatury.

Nowoczesny interfejs GitHuba, znany jako GitHub Next, wprowadza wiele udogodnień, takich jak foldery kodu z możliwością zwijania sekcji czy nowy system powiadomień z zaawansowanym filtrowaniem. Warto również poznać widok porównania plików (Compare), który uwidacznia różnice między gałęziami i commitami, oraz widok siatki (Network Graph), który wizualizuje historię rozgałęzień projektu. Opanowanie nawigacji na GitHubie to umiejętność, która zwraca się wielokrotnie w codziennej praktyce programistycznej.

10/50
Tworzenie nowego repozytorium
  • Kliknij "+" w prawym górnym rogu i wybierz "New repository".
  • Repository name: Krótka nazwa bez spacji (np. `moj-projekt-python`).
  • Description: Krótki opis tego, co robi ten program.
  • Public: Każdy może zobaczyć kod (idealne do nauki i portfolio).
  • Private: Tylko Ty i zaproszone osoby (projekty komercyjne/prywatne).
  • Na start warto zaznaczyć opcję "Add a README file".
Slide 10

Tworzenie repozytorium na GitHubie to czynność, którą będziesz wykonywać wielokrotnie, dlatego warto od razu wypracować dobre nawyki. Opcja inicjalizacji repozytorium z plikiem README, .gitignore i licencją oszczędza czas i zapewnia, że Twój projekt od samego początku będzie profesjonalnie przygotowany do publikacji. W praktyce developerskiej często używa się szablonów repozytoriów, które pozwalają na stworzenie zestawu plików początkowych wielokrotnego użytku — idealne rozwiązanie dla projektów, które mają podobną strukturę, na przykład aplikacji webowych czy bibliotek Pythona.

Kwestia widoczności repozytorium to nie tylko Public i Private — istnieje również opcja Internal, dostępna w planach Enterprise, która udostępnia projekt wszystkim członkom organizacji. W repozytoriach publicznych warto pamiętać o tym, że każdy użytkownik może utworzyć forka, co jest pożądaną cechą w projektach open source, ale może być niepożądane w przypadku kodu, który nie jest jeszcze gotowy do publikacji. Świadomy wybór widoczności i odpowiednia konfiguracja początkowych plików to pierwsze kroki do profesjonalnego zarządzania projektem.

11/50
README.md – serce projektu
  • To plik tekstowy wyświetlany pod listą plików w Twoim repozytorium.
  • Pisany w formacie Markdown (z rozszerzeniem `.md`).
  • Informuje użytkownika: o czym jest projekt, jak go użyć i jak zainstalować.
  • Dobry projekt bez README jest dla innych bezużyteczny.
  • Możesz tam wstawiać linki, obrazy, a nawet statusy testów.
  • Pamiętaj: pierwsze wrażenie na GitHubie robi właśnie plik README.
Slide 11

Plik README.md to pierwszy dokument, który odwiedzający Twoje repozytorium zobaczy, i często decyduje o tym, czy użytkownik zdecyduje się zostać i zapoznać z projektem. Dobrze napisany README powinien odpowiadać na cztery podstawowe pytania: czym jest ten projekt, jak go zainstalować, jak go używać i jak można się do niego przyczynić. W społeczności open source istnieje nawet inicjatywa Make a README, która promuje tworzenie wysokiej jakości dokumentacji początkowej. Warto również umieścić w README informację o wymaganiach systemowych, zależnościach i licencji, pod którą udostępniany jest projekt.

Nowoczesne pliki README często zawierają również tzw. odznaki, czyli małe obrazki informujące o statusie testów, pokryciu kodu czy wersji pakietu. Usługi takie jak Shields.io umożliwiają generowanie tych odznak w standardowym formacie, a ich umieszczenie w pliku README dodaje projektowi profesjonalnego wyglądu i dostarcza natychmiastowej informacji o stanie projektu. Pamiętaj, że README to żywy dokument — warto go aktualizować wraz z rozwojem projektu, aby zawsze odzwierciedlał jego bieżący stan i możliwości.

12/50
Markdown w pigułce
  • # Tytuł – nagłówek poziomu 1.
  • ## Podtytuł – nagłówek poziomu 2.
  • **Tekst** – Pogrubienie.
  • *Tekst* – Kursywa.
  • - element – lista punktowana.
  • [Link](url) – odnośnik do strony WWW.
  • `kod` – krótki fragment kodu w linii.
Slide 12

Markdown to język znaczników zaprojektowany przez Johna Grubera i Aarona Swartza w 2004 roku z myślą o łatwości czytania i pisania w surowej postaci tekstowej. W przeciwieństwie do HTML-a, który jest rozwlekły i trudny do ręcznej edycji, Markdown pozwala na szybkie formatowanie tekstu przy użyciu minimalnej składni, która jest intuicyjna nawet dla osób niezaznajomionych z programowaniem. GitHub rozszerza podstawową składnię Markdown o wiele przydatnych elementów, takich jak tabele, listy zadań, przekreślenia, automatyczne linkowanie do commitów i issues oraz diagramy w składni Mermaid. Te rozszerzenia zbiorczo nazywane są GitHub Flavored Markdown i stanowią de facto standard w społeczności deweloperskiej.

W praktyce warto opanować również bardziej zaawansowane elementy Markdowna, takie jak bloki kodu z podświetlaniem składni, cytaty blokowe, przypisy dolne czy definiowanie identyfikatorów nagłówków. Tworzenie spisów treści, osadzanie filmów z YouTube przez znaczniki HTML czy korzystanie z emotikon za pomocą dwukropków to kolejne techniki, które uatrakcyjnią Twoje dokumentacje. Znajomość Markdowna przydaje się nie tylko na GitHubie — używa go wiele platform, w tym Notion, Obsidian, Reddit i fora techniczne, co czyni go uniwersalnym narzędziem komunikacji pisemnej w branży IT.

13/50
Plik .gitignore – co to takiego?
  • To lista plików, których Git ma nigdy nie śledzić.
  • Każdy projekt ma pliki śmieciowe (pliki tymczasowe, konfiguracje edytora).
  • Wrzucanie node_modules czy skompilowanych plików .exe to błąd!
  • Przykładowa zawartość .gitignore dla Pythona:
# Ignoruj folder ze środowiskiem wirtualnym
venv/
# Ignoruj pliki skompilowane
*.pyc
__pycache__/
Slide 13

Plik .gitignore to cichy bohater każdego profesjonalnego repozytorium, który chroni przed zaśmiecaniem historii projektu niepotrzebnymi plikami. GitHub udostępnia gotowe szablony .gitignore dla większości języków programowania i środowisk, co pozwala na szybkie rozpoczęcie pracy bez konieczności ręcznego definiowania wszystkich reguł. Wzorce w .gitignore mogą być bardzo precyzyjne — możesz ignorować całe katalogi, konkretne pliki, pliki o określonym rozszerzeniu, a nawet używać negacji do wykluczania z ignorowania. Na przykład wzorzec *.log ignoruje wszystkie pliki z rozszerzeniem .log, ale !important.log sprawi, że konkretny plik zostanie śledzony mimo ogólnej reguły.

Warto wiedzieć, że istnieje również globalny plik .gitignore, który działa na wszystkich repozytoriach na Twoim komputerze, niezależnie od projektu. Konfiguruje się go komendą git config --global core.excludesFile, a przydaje się szczególnie do ignorowania plików specyficznych dla Twojego systemu operacyjnego, takich jak .DS_Store na macOS czy Thumbs.db na Windows. Dodatkowo istnieje plik .git/info/exclude, który działa lokalnie na danym repozytorium, ale nie jest commitowany — idealne miejsce na wzorce typowe dla Twojego środowiska pracy, którymi nie chcesz dzielić się z zespołem.

14/50
Dlaczego .gitignore jest krytyczny?
  • Porządek: Twoje repozytorium zawiera tylko to, co ważne.
  • Waga: Nie zapychasz chmury gigabajtami zbytecznych bibliotek (np. folder node_modules).
  • Bezpieczeństwo: Chroni przed przypadkowym wysłaniem haseł (.env).
  • GitHub oferuje gotowe szablony .gitignore dla niemal każdego języka.
  • Zawsze wybieraj szablon przy tworzeniu nowego repozytorium.
  • Plik raz dodany do systemu Git trudno potem „zignorować” – lepiej zrobić to od razu.
Slide 14

Niewłaściwe skonfigurowanie pliku .gitignore to jeden z najczęstszych błędów popełnianych przez początkujących programistów, który może prowadzić do poważnych konsekwencji. Wysłanie do zdalnego repozytorium plików zawierających hasła, klucze API czy tokeny uwierzytelniające naraża Twoje konto na przejęcie i może spowodować nieodwracalne szkody. Co gorsza, nawet jeśli później usuniesz taki plik z repozytorium, jego historia pozostanie w commitach i będzie dostępna dla każdego, kto sklonuje projekt. Dlatego tak ważne jest skonfigurowanie .gitignore jeszcze przed pierwszym commitem, a sprawdzenie, co faktycznie zostanie dodane, za pomocą komendy git status.

Profesjonalne projekty często stosują dodatkowe warstwy ochrony, takie jak walidacja w hookach pre-commit, która sprawdza, czy w repozytorium nie znajdują się rzeczy, które nie powinny się tam znaleźć. Narzędzia takie jak git-secrets czy truffleHog potrafią skanować historię commitów w poszukiwaniu przypadkowo ujawnionych sekretów. W środowisku korporacyjnym standardem jest również blokada na poziomie serwera, która uniemożliwia pushowanie commitów zawierających potencjalnie wrażliwe dane.

15/50
Wybór Licencji (License)
  • Licencja określa, co inni mogą robić z Twoim kodem.
  • Projekt bez licencji na GitHubie jest prawnie chroniony.
  • MIT: Rób co chcesz, tylko dopisz autora (polecana na start).
  • Apache 2.0: Podobna do MIT, ale lepiej chroni patenty.
  • GPLv3: Wymaga, aby projekty zależne też były Open Source.
  • Wybór licencji to ważny krok w budowaniu społeczności.
Slide 15

Wybór licencji open source to decyzja o charakterze prawnym, która określa, w jaki sposób inni mogą korzystać z Twojego kodu. Licencje permisywne, takie jak MIT, Apache 2.0 czy BSD, pozwalają na dowolne wykorzystanie kodu w projektach zamkniętych i komercyjnych, pod warunkiem zachowania informacji o autorstwie. Z kolei licencje copyleft, jak GPL czy AGPL, wymagają, aby każda pochodna praca była udostępniana na tych samych warunkach, co zapewnia, że zmodyfikowany kod pozostanie wolny i otwarty. Wybór między tymi rodzajami licencji zależy od Twoich intencji — czy chcesz maksymalnie rozpowszechnić kod, czy raczej zapewnić, że każda jego modyfikacja pozostanie dostępna dla społeczności.

GitHub ułatwia wybór licencji, wyświetlając przy jej wyborze krótkie podsumowanie warunków i ograniczeń. Warto jednak pamiętać, że brak jawnej licencji w repozytorium oznacza, że kod jest chroniony standardowym prawem autorskim i inni nie mają prawa go używać ani modyfikować. Jeśli zależy Ci na budowaniu społeczności wokół projektu, wybór odpowiedniej licencji i jasne jej określenie w pliku README to jeden z najważniejszych kroków.

16/50
Pobieranie kodu – Komenda: git clone
  • Klonowanie to pobranie całego repozytorium z GitHub na dysk.
  • Pobierane są wszystkie pliki, gałęzie i cała historia zmian.
  • Używamy adresu URL dostępnego pod guzikiem "Code".
C:\Projects> git clone https://github.com/uzytkownik/moj-projekt.git
# Git stworzy folder i pobierze tam pliki
Slide 16

Komenda git clone jest najczęściej używanym sposobem na pobranie zdalnego repozytorium na lokalny komputer, ale oferuje znacznie więcej opcji niż prosty clone domyślnej gałęzi. Możesz sklonować tylko określoną gałąź za pomocą --single-branch, co oszczędza czas i miejsce na dysku, gdy interesuje Cię tylko konkretna wersja kodu. Dla bardzo dużych repozytoriów z długą historią przydatny jest clone --depth 1, zwany płytkim klonowaniem, który pobiera tylko najnowszy commit bez całej historii zmian. W praktyce developerskiej często spotyka się również clone --recurse-submodules, który automatycznie inicjalizuje i aktualizuje submoduły projektu.

Git clone tworzy zdalny alias o nazwie origin, który automatycznie wskazuje na oryginalne źródło repozytorium. Możesz zmienić tę nazwę lub dodać dodatkowe zdalne repozytoria, co jest przydatne, gdy pracujesz z forkiem i chcesz synchronizować zmiany z głównym projektem. Warto również pamiętać, że git clone całkowicie izoluje Cię od źródła — po sklonowaniu możesz w pełni pracować offline, a jedyną komendą wymagającą połączenia z siecią są operacje push, pull i fetch.

17/50
Łączenie istniejącego projektu z GitHub
  • Masz już folder z kodem na dysku i zainicjowany Git?
  • Musisz wskazać Gitowi, gdzie w Internecie wysyłać zmiany.
  • Służy do tego pojęcie remote (zdalne repozytorium).
  • Domyślnie główny serwer nazywamy origin.
git remote add origin https://github.com/uzytkownik/repo.git
# Teraz Twój Git "zna" adres serwera GitHub
Slide 17

Łączenie istniejącego, lokalnego repozytorium z GitHubem to sytuacja niezwykle częsta w praktyce — zakładamy, że pracowałeś już nad projektem lokalnie i teraz chcesz go udostępnić światu. Proces ten wymaga najpierw utworzenia pustego repozytorium na GitHubie (bez inicjalizacji README, .gitignore czy licencji), a następnie podpięcia go do lokalnego projektu za pomocą komendy git remote add. Ważne jest, aby przed pierwszym pushem upewnić się, że gałąź główna ma taką samą nazwę zarówno lokalnie, jak i zdalnie — współcześnie standardem jest main zamiast master, a GitHub od 2020 roku domyślnie używa właśnie main.

W tej sytuacji szczególnie przydatna jest komenda git push -u origin main, która nie tylko wysyła zmiany, ale również ustawia upstream, czyli domyślne połączenie między lokalną a zdalną gałęzią. Dzięki temu późniejsze komendy git push i git pull mogą być wykonywane bez podawania nazwy zdalnego repozytorium i gałęzi. Warto też wiedzieć, że jeśli Twoje zdalne repozytorium nie jest puste — na przykład zawiera plik README utworzony podczas zakładania — musisz najpierw wykonać git pull, aby scalić te pliki przed wykonaniem pusha.

18/50
Komenda: git remote
  • Pozwala zarządzać połączeniami ze zdalnymi serwerami.
  • W projekcie możesz mieć wiele "remotów".
# Wyświetl aktualne połączenia
git remote -v

# Zmień adres istniejącego połączenia
git remote set-url origin nowy-url.git
Slide 18

Komenda git remote to narzędzie do zarządzania połączeniami między Twoim lokalnym repozytorium a zdalnymi serwerami, które często jest niedoceniane przez początkujących użytkowników. Jedno repozytorium może mieć wiele zdalnych aliasów — standardowo jest to origin, ale możesz dodać również upstream (do oryginalnego repozytorium, z którego zrobiłeś forka) czy backup (na przykład na własnym serwerze). Dzięki mechanizmowi wielu remote'ów możesz jednocześnie pracować z wieloma kopiami swojego kodu, wybierając odpowiednią za pomocą nazwy aliasu w komendach push i pull.

Aby zobaczyć szczegółowe informacje o wszystkich zdalnych repozytoriach, użyj git remote -v, który wyświetli URL-e dla operacji fetch i push. W praktyce developerskiej często zdarza się, że trzeba zmienić URL zdalnego repozytorium — na przykład po przeniesieniu projektu do innej organizacji na GitHubie — co można zrobić komendą git remote set-url. Istnieje również możliwość usunięcia zdalnego połączenia za pomocą git remote remove, co jest przydatne, gdy projekt przestał być aktywny i nie chcesz przypadkowo wysyłać do niego zmian.

19/50
Publikacja zmian – Komenda: git push
  • Push to wysyłka Twoich lokalnych commitów na serwer.
  • Dopóki nie wykonasz push, zmiany są tylko na Twoim dysku.
# Wyślij commity z gałęzi main na serwer origin
git push origin main

# Opcja -u zapamiętuje ustawienia gałęzi
git push -u origin main
Slide 19

Komenda git push jest podstawowym narzędziem do publikowania lokalnych zmian w zdalnym repozytorium, ale jej możliwości wykraczają daleko poza prosty push na domyślną gałąź. Możesz wysyłać zmiany na konkretną gałąź zdalną, tworzyć nowe gałęzie zdalne, a nawet kasować je za pomocą składni git push origin --delete nazwa_galezi. Szczególnie ostrożnie należy obchodzić się z flagą --force, która nadpisuje zdalną historię zmian — jej użycie jest konieczne w niektórych sytuacjach, ale może spowodować utratę pracy innych członków zespołu, jeśli nie jest stosowana rozważnie.

W nowoczesnym przepływie pracy często używa się git push --force-with-lease, która jest bezpieczniejszą alternatywą dla --force. Flaga ta sprawdza, czy zdalna gałąź zmieniła się od czasu ostatniego pobrania i odmawia wykonania pusha, jeśli ktoś inny dodał nowe commity, chroniąc w ten przed przypadkowym nadpisaniem cudzej pracy. Warto również pamiętać o konfiguracji git push.autoSetupRemote, która automatycznie ustawia upstream dla nowej gałęzi przy pierwszym pushu, co znacznie ułatwia pracę z wieloma gałęziami tematycznymi.

20/50
Pobieranie nowości – Komenda: git pull
  • Jeśli ktoś inny dodał zmiany na GitHubie, musisz je pobrać.
  • Pull pobiera zmiany i automatycznie próbuje je scalić.
  • Zawsze wykonuj pull przed pracą, aby uniknąć konfliktów.
git pull origin main
# Pobiera zmiany i łączy je z lokalnym folderem
Slide 20

Komenda git pull to w rzeczywistości połączenie dwóch operacji: git fetch, która pobiera zmiany ze zdalnego repozytorium, oraz git merge, która scala je z bieżącą gałęzią lokalną. Ta automatyzacja jest wygodna, ale niesie ze sobą ryzyko nieoczekiwanych konfliktów scalania, szczególnie gdy pracujesz w zespole nad tymi samymi plikami. Dlatego wiele zespołów preferuje stosowanie komendy git pull --rebase, która zamiast tworzyć commit scalający, nanosi Twoje lokalne zmiany na wierzch pobranych zmian, co daje czystszą, liniową historię projektu.

Przed wykonaniem git pull warto upewnić się, że nie masz niezcommitowanych zmian lokalnych, które mogłyby kolidować ze scalaniem. Narzędzie git stash pozwala tymczasowo odłożyć takie zmiany na bok, abyś mógł bezpiecznie pobrać nowości i dopiero potem przywrócić swoje robocze modyfikacje. W repozytoriach z wieloma współtwórcami dobrą praktyką jest regularne wykonywanie git pull — nawet kilka razy dziennie — aby minimalizować ryzyko dużych konfliktów i utrzymywać lokalny kod jak najbardziej aktualny względem wersji zdalnej.

21/50
Pull vs Fetch – różnica
  • git fetch: Pobiera informacje, ale nie dotyka Twoich plików.
  • git pull: Pobiera i połączy natychmiast. Zmienia pliki na dysku.
  • Pull = Fetch + Merge.
  • Używaj fetch, aby sprawdzić co zrobili inni bez ryzyka scalenia.
  • Pull jest szybszy przy standardowym przepływie pracy.
Slide 21

Rozróżnienie między git pull a git fetch jest kluczowe dla zrozumienia, jak działa synchronizacja w Git, i często stanowi źródło nieporozumień wśród początkujących. Git fetch jedynie pobiera nowe dane ze zdalnego repozytorium i aktualizuje zdalne wskaźniki gałęzi, ale nie modyfikuje Twoich lokalnych plików ani gałęzi. Dzięki temu możesz bezpiecznie podejrzeć, co zmieniło się w zdalnym repozytorium, sprawdzić różnice za pomocą git log origin/main..HEAD i dopiero wtedy podjąć decyzję o scalaniu. To daje Ci pełną kontrolę nad tym, kiedy i jak integrujesz zmiany z kodem innych osób.

Git pull z kolei wykonuje fetch, a następnie automatycznie scala pobrane zmiany z Twoją bieżącą gałęzią, co może prowadzić do nieoczekiwanych sytuacji, jeśli nie jesteś przygotowany. Profesjonalni programiści często stosują strategię: najpierw git fetch, potem git log origin/main..HEAD, aby sprawdzić, czy nasze commity są przed czy po zdalnych, a następnie git rebase origin/main zamiast pull. Taki przepływ pracy daje większą kontrolę nad historią i pozwala uniknąć niepotrzebnych commitów scalających, które zaśmiecają historię projektu.

22/50
Autentykacja: Problemy z hasłem
  • GitHub nie pozwala już na używanie zwykłego hasła w konsoli.
  • Wpisanie hasła przy pushu spowoduje błąd uwierzytelniania.
  • Mamy dwie drogi: tokeny (PAT – Personal Access Token) lub SSH.
  • PAT jest prostszy w konfiguracji; SSH jest bezpieczniejszy i wygodniejszy w codziennym użyciu.
  • Wyjaśnimy oba sposoby konfiguracji.
Slide 22

Problemy z autentykacją to jedna z najczęstszych frustracji nowych użytkowników GitHuba, wynikająca z ewolucji polityki bezpieczeństwa platformy. Od 2021 roku GitHub całkowicie wyłączył możliwość uwierzytelniania za pomocą hasła podczas operacji Git na linii komend, co oznacza, że każda interakcja ze zdalnym repozytorium wymaga użycia tokena, klucza SSH lub innej metody uwierzytelniania. Ta zmiana, choć początkowo uciążliwa, znacząco podniosła poziom bezpieczeństwa, eliminując ryzyko przechwycenia hasła w niezaszyfrowanym kanale komunikacji. Wiele starszych poradników i kursów wideo wciąż pokazuje logowanie hasłem, co dodatkowo potęguje zamieszanie wśród początkujących użytkowników.

Jeśli podczas operacji git push lub git pull pojawia się komunikat o błędzie autentykacji, pierwszym krokiem powinno być sprawdzenie, czy korzystasz z aktualnej metody uwierzytelniania. W przypadku tokenów PAT warto pamiętać, że mają one datę ważności i po jej upływie należy wygenerować nowy. Dla kluczy SSH problemem może być nieuruchomiony agent SSH lub użycie nieprawidłowego klucza, co można zweryfikować komendą ssh -T git@github.com, która powinna zwrócić komunikat z nazwą Twojego użytkownika.

23/50
Metoda 1: Personal Access Token (PAT)
  • To "hasło tymczasowe" generowane w ustawieniach konta.
  • Ścieżka: Developer settings → Personal access tokens.
  • Wybierz uprawnienie 'repo' dla pełnej kontroli.
  • Token kopiujesz tylko raz! Zapisz go w bezpiecznym miejscu.
  • Wklejasz go zamiast hasła w terminalu.
Slide 23

Personal Access Token to cyfrowy klucz tymczasowy, który zastępuje hasło podczas uwierzytelniania w operacjach Git i API. Tokeny można konfigurować z bardzo precyzyjnym zakresem uprawnień — na przykład możesz utworzyć token, który ma prawo tylko do odczytu repozytoriów publicznych, bez możliwości zapisu czy zarządzania ustawieniami konta. To oznacza, że nawet jeśli token wycieknie, potencjalny atakujący będzie miał dostęp tylko do tych zasobów, które mu jawnie przyznałeś. Od 2022 roku GitHub wprowadził również tokeny szczegółowe na poziomie repozytorium, które pozwalają jeszcze bardziej ograniczyć zakres dostępu.

Podczas generowania tokena warto nadać mu opisową nazwę, która pozwoli Ci później przypomnieć sobie, do czego konkretnie był używany, np. laptop-studencki-laboratorium czy serwer-ci-cd-frontend. Tokeny należy przechowywać w bezpiecznym miejscu, najlepiej w menedżerze haseł lub w pliku konfiguracyjnym .env, który nie jest commitowany do repozytorium. Jeśli podejrzewasz, że token został skompromitowany, natychmiast go unieważnij w ustawieniach GitHuba i wygeneruj nowy — to jedna z zalet tokenów w porównaniu z hasłami, ponieważ nie wymaga zmiany hasła do całego konta.

24/50
Metoda 2: Klucze SSH (Zalecane)
  • To mechanizm pary kluczy: publicznego i prywatnego.
  • Klucz prywatny zostaje na Twoim komputerze.
  • Klucz publiczny wklejasz na GitHubie.
  • Komputery dogadują się same bez wpisywania haseł.
  • To najbezpieczniejszy standard profesjonalny.
Slide 24

Klucze SSH wykorzystują kryptografię asymetryczną, co oznacza, że składają się z pary kluczy — publicznego i prywatnego — które są matematycznie powiązane, ale nie można na ich podstawie wywnioskować jednego z drugiego. Klucz prywatny przypomina Twój podpis cyfrowy i musi pozostać tajny, podczas gdy klucz publiczny możesz swobodnie udostępniać, ponieważ służy jedynie do weryfikacji Twojej tożsamości. Mechanizm ten jest znacznie bezpieczniejszy niż hasła, ponieważ klucz prywatny nigdy nie jest przesyłany przez sieć — Twój komputer używa go jedynie do podpisania zapytania, a serwer weryfikuje ten podpis za pomocą klucza publicznego. GitHub zaleca używanie algorytmu Ed25519 zamiast starszego RSA, ponieważ oferuje on lepsze bezpieczeństwo przy krótszych kluczach i szybszym działaniu.

Po skonfigurowaniu kluczy SSH możesz korzystać z agenta SSH, który przechowuje odszyfrowany klucz w pamięci na czas trwania sesji, co eliminuje konieczność wielokrotnego wpisywania hasła. Na systemach Linux i macOS agent SSH uruchamia się automatycznie, natomiast na Windows trzeba go jawnie uruchomić poprzez usługę OpenSSH Authentication Agent. W środowisku profesjonalnym często stosuje się również plik ~/.ssh/config, który pozwala definiować różne klucze dla różnych serwerów i automatycznie wybierać odpowiedni podczas łączenia.

25/50
Generowanie klucza SSH
  • Otwórz terminal i wpisz komendę generowania:
ssh-keygen -t ed25519 -C "twoj@email.com"
# Klikaj ENTER dla domyślnych ustawień
  • Klucze są w folderze .ssh w katalogu domowym.
Slide 25

Proces generowania klucza SSH za pomocą ssh-keygen jest prosty, ale kryje w sobie kilka istotnych niuansów, które warto poznać. Wybór algorytmu -t ed25519 jest zalecany przez GitHub i większość organizacji bezpieczeństwa, ale starsze systemy mogą wymagać użycia -t rsa -b 4096, ponieważ Ed25519 nie jest obsługiwany we wszystkich starszych implementacjach SSH. Flaga -C pozwala dodać komentarz do klucza, którym tradycyjnie jest adres e-mail — ułatwia to identyfikację, do którego konta lub serwisu dany klucz należy, szczególnie gdy masz ich wiele. Parametr -f pozwala określić niestandardową nazwę pliku klucza, co jest przydatne, gdy chcesz mieć osobne klucze dla różnych serwisów, np. id_ed25519_github i id_ed25519_gitlab.

Jeśli podczas generowania klucza ustawisz hasło (passphrase), Twój klucz prywatny będzie dodatkowo chroniony szyfrowaniem AES i nawet w przypadku wykradzenia pliku klucza atakujący nie będzie mógł go użyć bez znajomości tego hasła. W praktyce produkcyjnej używanie kluczy z hasłem jest standardem bezpieczeństwa, a hasło można przechowywać w menedżerze haseł i dodawać do agenta SSH na początku każdej sesji pracy. Nigdy nie udostępniaj swojego klucza prywatnego nikomu — jeśli podejrzewasz, że mógł zostać skompromitowany, natychmiast wygeneruj nową parę i zaktualizuj klucz publiczny na GitHubie.

26/50
Dodawanie klucza do konta GitHub
  • Odszukaj plik id_ed25519.pub (klucz publiczny).
  • Skopiuj zawartość (zaczyna się od ssh-ed25519...).
  • Na GitHub: Settings → SSH and GPG keys → New SSH key.
  • Nadaj nazwę i wklej zawartość klucza.
  • Używaj adresów SSH zaczynających się od git@github.com.
Slide 26

Po dodaniu klucza publicznego do konta GitHub warto zweryfikować poprawność konfiguracji za pomocą komendy ssh -T git@github.com. Jeśli wszystko działa prawidłowo, GitHub wyświetli komunikat z Twoją nazwą użytkownika i potwierdzeniem pomyślnego uwierzytelnienia — jest to najlepszy test poprawności całego procesu. Podczas pierwszego łączenia z GitHubem przez SSH możesz zobaczyć ostrzeżenie o nieznanym hoście, które wynika z braku klucza hosta w pliku known_hosts — po jego zaakceptowaniu połączenie będzie już nawiązywane automatycznie i bezpiecznie.

W praktyce warto pamiętać, że na jednym koncie GitHub możesz przechowywać wiele kluczy publicznych, co jest przydatne, gdy pracujesz na kilku komputerach — stacjonarnym, laptopie i serwerze CI/CD. Każdemu kluczowi możesz nadać opisową nazwę, która pomoże Ci zidentyfikować, do którego urządzenia należy. Jeśli zgubisz komputer lub podejrzewasz, że ktoś mógł uzyskać do niego dostęp, natychmiast usuń odpowiedni klucz z ustawień konta GitHub i wygeneruj nowy na bezpiecznym urządzeniu.

27/50
Praca zespołowa – Wprowadzenie
  • GitHub służy do pracy z innymi ludźmi.
  • Dwie drogi: Współtwórca (Collaborator) lub Forkowanie.
  • W małych grupach dodasz kolegów jako Collaborators.
  • W dużych projektach publicznych robisz osobiste kopie.
  • Prawidłowy model zależy od wielkości zespołu.
Slide 27

Praca zespołowa na GitHubie to znacznie więcej niż tylko wspólne commity — to cała filozofia tworzenia oprogramowania oparta na przejrzystości, wzajemnym szacunku i systematycznej kontroli jakości. W profesjonalnym środowisku developerskim każda zmiana przechodzi przez proces Pull Requesta, który umożliwia innym członkom zespołu przejrzenie kodu, zgłoszenie uwag i zatwierdzenie zmian przed połączeniem ich z główną gałęzią projektu. Code review, czyli przegląd kodu, jest jedną z najskuteczniejszych metod wykrywania błędów i dzielenia się wiedzą w zespole, ponieważ pozwala na wymianę spostrzeżeń i wypracowanie lepszych rozwiązań przed wdrożeniem.

Efektywna współpraca na GitHubie wymaga ustalenia jasnych zasad, takich jak nazewnictwo gałęzi, częstotliwość commitów i wymagana liczba akceptacji przed mergem. Wiele zespołów stosuje metodologię Git Flow lub GitHub Flow, które definiują struktury gałęzi i proces publikacji zmian. W małych zespołach akademickich warto zacząć od prostego GitHub Flow, który zakłada pracę na gałęzi głównej i krótkożyciowych gałęziach tematycznych, co jest łatwiejsze do opanowania i nie wymaga dodatkowego narzutu organizacyjnego.

28/50
Dodawanie Współtwórcy (Collaborator)
  • W repozytorium: Settings → Collaborators.
  • Kliknij Add people i wpisz nazwę użytkownika.
  • Druga osoba musi zaakceptować zaproszenie z e-maila.
  • Osoba ta może bezpośrednio robić push do Twojego kodu.
  • Współtwórca ma dużą władzę – wybieraj zaufane osoby.
Slide 28

Funkcja Collaborator to najprostszy sposób na udostępnienie dostępu do repozytorium innym osobom i jest idealna dla małych zespołów akademickich oraz projektów w zamkniętym gronie. Właściciel repozytorium może nadawać uprawnienia na kilku poziomach — Read, Triage, Write, Maintain i Admin — każdy z innym zakresem możliwości, od tylko odczytu kod, aż po pełne zarządzanie repozytorium. W praktyce studenckiej najczęściej używa się poziomu Write, który pozwala na pushowanie zmian, tworzenie gałęzi i zarządzanie Issues, ale nie umożliwia usunięcia repozytorium ani modyfikacji jego ustawień. Przemyślane zarządzanie uprawnieniami jest kluczowe w każdym projekcie, nawet w małym zespole, aby uniknąć przypadkowego zniszczenia pracy.

Dla większych grup warto rozważyć utworzenie organizacji na GitHubie, która pozwala na grupowanie repozytoriów i scentralizowane zarządzanie zespołami i uprawnieniami. Organizacje oferują dodatkowe funkcje związane z audytem i raportowaniem, a każda osoba w organizacji ma swój własny login, co ułatwia śledzenie odpowiedzialności za zmiany. GitHub oferuje darmowe organizacje dla projektów open source oraz dla uczelni w ramach GitHub Education, co pozwala na korzystanie z zaawansowanych funkcji bez ponoszenia kosztów.

29/50
Co to jest Fork?
  • Fork to Twoja osobista kopia cudzego projektu.
  • Możesz zmieniać co chcesz bez psucia oryginału.
  • Idealnie nadaje się do nauki i eksperymentów.
  • Możesz zaproponować własne zmiany autorowi (Pull Request).
  • Podstawa tworzenia otwartego oprogramowania Open Source.
Slide 29

Forkowanie repozytorium to fundament, na którym opiera się cały model współpracy w otwartym oprogramowaniu open source. Kiedy robisz forka, tworzysz swoją własną kopię całego repozytorium na swoim koncie GitHub, nad którą masz pełną kontrolę — możesz modyfikować kod, tworzyć gałęzie i eksperymentować bez wpływu na oryginalny projekt. Różnica między forkiem a zwykłą gałęzią polega na tym, że fork jest całkowicie niezależnym repozytorium, które może żyć własnym życiem, podczas gdy gałąź istnieje w kontekście oryginalnego repozytorium i jest bezpośrednio współdzielona z jego użytkownikami.

Standardowy przepływ pracy z forkiem obejmuje dodanie oryginalnego repozytorium jako kolejnego zdalnego źródła (upstream), regularne synchronizowanie swojego forka z upstreamem oraz zgłaszanie Pull Requestów, gdy chcesz, aby Twoje zmiany trafiły do oryginalnego projektu. Ten mechanizm jest używany przez miliony programistów na całym świecie do współtworzenia takich projektów jak React, TensorFlow czy Linux Kernel. Forkowanie jest bezpieczne dla autorów oryginalnego projektu — nie daje forkerowi żadnych uprawnień do repozytorium źródłowego, a jedynie tworzy prywatną kopię do pracy.

30/50
Zadanie 1: Twój pierwszy "Push"
  • Załóż nowe repozytorium o nazwie cwiczenie-git.
  • Zrób lokalny folder, plik i pierwszy commit.
  • Dodaj adres remote i spróbuj git push origin main.
  • Jeśli zapyta o hasło – użyj Tokena (PAT).
  • Odśwież stronę i sprawdź pliki online!
Slide 30

Twój pierwszy git push to kamień milowy w nauce pracy z GitHubem — moment, w którym Twój lokalny kod trafia do chmury i staje się dostępny dla świata. Przed wykonaniem pusha warto sprawdzić kilka rzeczy: czy plik .gitignore został skonfigurowany, czy nie commitujesz przypadkowo wrażliwych danych oraz czy wiadomości commitów są opisowe i zgodne z konwencją. Dobrym nawykiem jest wykonanie git status przed pushem, aby upewnić się, że wysyłasz dokładnie to, co zamierzasz, i żadne niepożądane pliki nie zostały przypadkowo dodane do śledzenia przez Gita.

Po udanym pushu przejdź do swojego repozytorium na GitHubie i odśwież stronę — zobaczysz swoje pliki wraz z pełną historią commitów. To satysfakcjonujące uczucie widzieć efekty swojej pracy w chmurze, ale pamiętaj, że to dopiero początek. Wkrótce nauczysz się pracy z gałęziami, Pull Requestami i automatyzacją, które sprawią, że Twój przepływ pracy będzie w pełni profesjonalny. Każdy push, który wykonasz, buduje Twoje cyfrowe portfolio i zbliża Cię do bycia samodzielnym programistą.

31/50
Problemy przy Push – Co jeśli się nie udaje?
  • "Rejected": Musisz najpierw pobrać zmiany (pull).
  • "Permission denied": Złe uprawnienia tokena/SSH.
  • "Repository not found": Literówka w adresie URL.
  • Zawsze czytaj komunikaty błędów w konsoli.
  • Git zazwyczaj podpowiada jak naprawić problem.
Slide 31

Błąd podczas git push to sytuacja frustrująca, ale całkowicie normalna w codziennej pracy programisty — każdy doświadcza jej wielokrotnie. Najczęstszą przyczyną odrzucenia pusha jest to, że zdalne repozytorium zawiera commity, których nie masz lokalnie, co oznacza, że ktoś inny opublikował zmiany od czasu Twojego ostatniego pulla. Git chroni Cię w ten sposób przed nadpisaniem cudzej pracy, ponieważ historia projektu musi być spójna i liniowa. Rozwiązaniem jest pobranie najnowszych zmian za pomocą git pull, ewentualne rozwiązanie konfliktów i dopiero wtedy ponowne wykonanie pusha.

Innym częstym problemem jest próba pushowania na gałąź chronioną, która wymaga przejścia przez Pull Request lub spełnienia określonych warunków, takich jak pomyślne przejście testów. W repozytoriach publicznych i profesjonalnych ochrona gałęzi głównej jest standardem, który zapobiega przypadkowemu wpuszczeniu błędnego kodu do produkcji. Jeśli potrzebujesz zaktualizować chronioną gałąź, utwórz nową gałąź roboczą, wprowadź tam zmiany i zgłoś Pull Request — to bezpieczniejsza i bardziej przejrzysta ścieżka niż ominięcie zabezpieczeń.

32/50
System zgłoszeń: Issues
  • Zakładka "Issues" to Twoja lista zadań i błędów.
  • Zgłaszasz tu usterki lub pomysły na funkcje.
  • W zespole możesz przypisywać zadania do konkretnych osób.
  • Używaj etykiet (np. bug, documentation), aby utrzymać porządek.
  • To profesjonalny sposób komunikacji, znacznie lepszy od komunikatorów.
Slide 32

System Issues na GitHubie to zaawansowane narzędzie do śledzenia zadań, błędów i pomysłów, które wykracza poza prostą listę zgłoszeń. Każde Issue można opatrzyć etykietami (labels), które kategoryzują zgłoszenie według typu (bug, feature, documentation), priorytetu (critical, high, low) lub statusu (needs review, in progress). Możesz również przypisać Issue do konkretnych osób, dodać je do kamieni milowych (milestones) grupujących zgłoszenia według wersji projektu lub terminów oraz łączyć je z Pull Requestami, aby automatycznie zamykać zgłoszenie po wdrożeniu zmiany. Ten system pozwala na efektywne zarządzanie nawet bardzo złożonymi projektami z setkami współtwórców.

Projekty na GitHubie mogą korzystać z tablic projektowych (Projects), które działają na zasadzie tablicy Kanban z kolumnami takimi jak To Do, In Progress i Done. Tablice te można łączyć z Issues i Pull Requestami, przeciągając karty między kolumnami w miarę postępu prac. To szczególnie przydatne w zespołach stosujących zwinne metodyki zarządzania projektami, ponieważ daje przejrzysty obraz postępu prac i umożliwia szybkie identyfikowanie wąskich gardeł w procesie. GitHub stale rozwija tę funkcję, wprowadzając widoki tabelaryczne i kalendarzowe oprócz tradycyjnego widoku kanban.

33/50
Pisanie dobrych zgłoszeń (Issues)
  • Tytuł: Jasny i konkretny opis problemu.
  • Opis: Kroki do odtworzenia błędu.
  • Wklejaj zrzuty ekranu i logi błędów.
  • Etykieta: Pomagaj innym zrozumieć typ zgłoszenia.
  • Łącz zgłoszenia z commitami (np. #10).
Slide 33

Umiejętność pisania dobrych zgłoszeń to kompetencja miękka, która w środowisku zdalnym jest równie ważna jak umiejętność pisania kodu. Dobre Issue powinno zawierać tytuł, który jednoznacznie identyfikuje problem lub propozycję, oraz opis zawierający kroki do reprodukcji błędu, spodziewane i rzeczywiste zachowanie oraz informacje o środowisku, w którym problem wystąpił. GitHub oferuje możliwość tworzenia szablonów dla Issues i Pull Requestów, co standaryzuje proces zgłaszania i ułatwia zbieranie wszystkich niezbędnych informacji od samego początku. W projektach open source stosowanie szablonów jest standardem, który znacząco podnosi jakość zgłoszeń.

Warto również pamiętać o kulturze komunikacji w zgłoszeniach — należy być rzeczowym, uprzejmym i unikać zbędnych emocji nawet w trudnych sytuacjach. Zgłoszenia często służą jako dokumentacja decyzji technicznych, dlatego prowadzenie rozmowy w Issue i pozostawienie jej w widocznej formie jest lepszym rozwiązaniem niż przenoszenie dyskusji do komunikatorów. Przyszli programiści pracujący nad projektem będą Ci wdzięczni za pozostawienie dobrze udokumentowanych decyzji projektowych i dyskusji technicznych w Issues.

34/50
Łączenie commitów z Issues
  • Używając znaku # w opisie zatwierdzenia, połączysz je ze zgłoszeniem (issue).
  • "Fixes #10" w opisie zatwierdzenia automatycznie zamknie zgłoszenie nr 10.
  • To bardzo wygodne narzędzie do zarządzania historią pracy projektowej.
Slide 34

Automatyczne zamykanie Issues poprzez odpowiednie sformułowanie w opisie commita to jedna z najwygodniejszych funkcji GitHuba, która usprawnia zarządzanie projektem. Wystarczy w treści commita umieścić frazę closes #numer, fixes #numer lub resolves #numer, a GitHub automatycznie zamknie odpowiednie Issue po połączeniu commita z domyślną gałęzią. Mechanizm ten działa również w treści Pull Requesta, co pozwala na jednoczesne połączenie zmian w kodzie i zamknięcie powiązanych zgłoszeń w jednym płynnym procesie. To oszczędza czas i minimalizuje ryzyko pozostawienia otwartych Issues, które faktycznie zostały już rozwiązane.

Dla bardziej zaawansowanego zarządzania można łączyć Issues z Pull Requestami za pomocą narzędzi GitHub Projects i widoków zależności. Istnieje również możliwość tworzenia połączonych list zadań (task lists) w Issues, które pozwalają dzielić duże zgłoszenia na mniejsze podzadania, z których każde może być osobno śledzone i zamykane. W dużych projektach open source często stosuje się automatyzacje GitHub Actions, które na podstawie etykiet i zawartości Issues automatycznie przypisują zgłoszenia do odpowiednich osób lub dodają je do odpowiednich projektów.

35/50
Przeglądanie historii na GitHub
  • Kliknij ikonę zegara (historia – History) przy dowolnym pliku.
  • Zobaczysz listę wszystkich zmian od momentu powstania pliku.
  • Funkcja "Blame" pokazuje autora każdej pojedynczej linijki kodu.
  • Możesz łatwo porównać dwie dowolne wersje ze sobą.
  • Świetne narzędzie do analizy ewolucji kodu i nauki na błędach.
Slide 35

GitHub oferuje kilka zaawansowanych widoków historii, które wykraczają poza to, co można zobaczyć w konsolowym git log. Widok Network Graph dostępny w Insights → Network wizualizuje historię rozgałęzień i połączeń w formie grafu, pokazując, jak gałęzie się rozchodzą i łączą w czasie. Jest to niezwykle pomocne w zrozumieniu złożonych historii projektów z wieloma współtwórcami, ponieważ w jednym rzucie oka widać, kto kiedy pracował nad czym i jak zmiany przepływały między gałęziami. Network Graph pokazuje również, które gałęzie nie zostały jeszcze scalone z gałęzią główną, co pomaga w identyfikacji porzuconej pracy.

Funkcja Blame (dostępna w widoku każdego pliku) pozwala zobaczyć, w którym commicie i przez kogo została wprowadzona każda linia kodu. Jest to podstawowe narzędzie do debugowania i zrozumienia intencji stojących za poszczególnymi fragmentami kodu — klikając na commit w widoku Blame, możesz przeczytać pełną wiadomość commita i zobaczyć cały kontekst zmiany. Widok Compare z kolei umożliwia porównanie dowolnych dwóch gałęzi, tagów lub commitów, pokazując, jakie pliki zostały zmienione i jakie są dokładne różnice w kodzie.

36/50
Bezpieczeństwo – Czego nie wysyłamy?
  • Klucze API i hasła do baz danych.
  • Prywatne zdjęcia i ważne dokumenty osobiste.
  • Pliki konfiguracyjne z danymi wrażliwymi.
  • Boty skanują GitHuba w poszukiwaniu haseł non-stop.
  • Wysłanie hasła grozi natychmiastowym przejęciem.
Slide 36

Bezpieczeństwo kodu na GitHubie to zagadnienie wieloaspektowe, które wykracza poza zwykłe unikanie commitowania haseł. GitHub oferuje wbudowane narzędzie Dependabot, które automatycznie skanuje zależności Twojego projektu w poszukiwaniu znanych podatności i zgłasza Pull Requesty z propozycjami aktualizacji do bezpieczniejszych wersji. Dodatkowo, funkcja secret scanning monitoruje repozytoria w poszukiwaniu wykradzionych kluczy i tokenów, automatycznie powiadamiając zarówno Ciebie, jak i dostawcę usługi, której dane uwierzytelniające wyciekły. Te mechanizmy są aktywne domyślnie dla wszystkich repozytoriów publicznych i stanowią podstawową warstwę ochrony Twojego kodu.

W repozytoriach prywatnych i organizacjach można dodatkowo skonfigurować reguły ochrony gałęzi, które wymagają pomyślnego przejścia testów CI, określonej liczby recenzji Pull Request lub podpisu commitów GPG przed scaleniem zmian. W środowiskach korporacyjnych często stosuje się również GitHub Advanced Security, które oferuje skanowanie kodu pod kątem podatności, analizę przepływu danych oraz wykrywanie tajemnic w kodzie źródłowym. Pamiętaj, że bezpieczeństwo to proces, a nie jednorazowa konfiguracja — regularne przeglądy zależności i aktualizacje są kluczowe dla utrzymania projektu w bezpiecznym stanie.

37/50
Wysłałem hasło! Co robić?
  • Nowe zatwierdzenie (commit) usuwające hasło nie naprawia problemu – hasło zostaje w historii!
  • 1. Natychmiast zmień hasło u dostawcy usługi (np. w bazie danych).
  • 2. Usuń historię Gita lub użyj specjalistycznych narzędzi do czyszczenia repozytorium.
  • 3. Najbezpieczniej jest usunąć całe repozytorium i stworzyć je na nowo.
  • Zawsze używaj pliku .gitignore, aby zapobiegać takim błędom.
Slide 37

Jeśli zauważysz, że przypadkowo wysłałeś hasło lub token do publicznego repozytorium, nie panikuj, ale działaj natychmiast. Pierwszym krokiem jest unieważnienie skompromitowanego hasła lub tokena w serwisie, którego dotyczy wyciek — zmień hasło na wszystkich kontach, które używały tego samego hasła, i wygeneruj nowy token. Następnie usuń wrażliwe dane z pliku i wykonaj nowy commit, ale pamiętaj, że to nie usuwa pliku z historii repozytorium. Każdy, kto sklonował lub zobaczył Twoje repozytorium przed usunięciem wrażliwych danych, wciąż ma dostęp do historii i może odczytać hasło z poprzednich commitów.

Aby całkowicie usunąć wrażliwe dane z historii repozytorium, musisz użyć narzędzi takich jak git filter-branch lub lepszego i szybszego BFG Repo-Cleaner. BFG to narzędzie napisane w Scali, które umożliwia masowe usuwanie plików z całej historii commitów przy zachowaniu pozostałej struktury repozytorium. Po oczyszczeniu historii wykonaj git push --force, aby zaktualizować zdalne repozytorium, ale pamiętaj, że jeśli inni już sklonowali Twój projekt, będą musieli wykonać świeże clone, aby nie pracować na nieaktualnej wersji historii. GitHub dodatkowo zaleca zgłoszenie incydentu do GitHuba, który może zablokować dostęp do skompromitowanych danych na poziomie serwisu.

38/50
GitHub Pages – pochwal się stroną
  • Darmowy hosting dla statycznych stron www.
  • Włączasz w Settings → Pages na gałęzi main.
  • Strona pod adresem nazwa.github.io/projekt.
  • Idealne dla portfolio i dokumentacji.
  • Możesz podpiąć własną domenę firmową.
Slide 38

GitHub Pages to darmowy hosting statycznych stron WWW, który pozwala na publikację witryny bezpośrednio z repozytorium, bez potrzeby konfigurowania serwera czy zakupowania hostingu. Każde konto może mieć jedną stronę główną (nazwa_użytkownika.github.io) oraz nieograniczoną liczbę stron projektowych, które są automatycznie wiązane z gałęzią lub katalogiem w repozytorium. GitHub Pages wspiera natywnie generatory stron statycznych, takie jak Jekyll (domyślnie), Hugo czy 11ty, co pozwala na tworzenie zaawansowanych blogów i dokumentacji technicznych. Strony są serwowane przez globalną sieć CDN, co zapewnia szybki czas ładowania na całym świecie.

Aby uruchomić GitHub Pages, przejdź do ustawień repozytorium, znajdź sekcję Pages i wybierz gałąź źródłową oraz ewentualnie katalog. Możesz również skonfigurować własną domenę, która będzie wskazywać na Twoją stronę — GitHub automatycznie wystawi certyfikat SSL dla niestandardowej domeny. Warto wiedzieć, że GitHub Pages ma pewne ograniczenia: nie obsługuje języków skryptowych po stronie serwera (PHP, Python), a repozytorium nie może przekraczać 1 GB. Dla prostych projektów portfolio, dokumentacji czy strony wizytówki jest to jednak rozwiązanie w pełni wystarczające i całkowicie darmowe.

39/50
Wiki i Dyskusje
  • Wiki: Bogata dokumentacja w formie artykułów.
  • Discussions: Forum dyskusyjne wewnątrz projektu.
  • Używane w dużych projektach z wieloma użytkownikami.
  • Miejsce na pytania techniczne i ogłoszenia.
Slide 39

GitHub Wiki to wbudowane narzędzie do tworzenia rozbudowanej dokumentacji projektu, które działa na zasadzie osobnego repozytorium Git powiązanego z głównym projektem. Każda strona Wiki jest plikiem Markdown, który możesz edytować zarówno przez interfejs webowy, jak i lokalnie — Wiki jest bowiem pełnoprawnym repozytorium Gita z własną historią commitów i możliwością klonowania. To rozwiązanie sprawdza się szczególnie w projektach, które wymagają obszernej dokumentacji użytkownika, poradników konfiguracji czy FAQ, gdzie pojedynczy plik README byłby niewystarczający. Wiki obsługuje również załączniki, obrazy i linki między stronami, co pozwala na tworzenie spójnej i rozbudowanej bazy wiedzy.

GitHub Discussions to nowsze narzędzie, które wprowadza elementy forum dyskusyjnego bezpośrednio do repozytorium, wypełniając lukę między Issues a swobodną komunikacją. Discussions są przeznaczone do otwartych rozmów, pytań i pomysłów, które nie mieszczą się w klasyfikacji Issues — ogłoszenia, pomysły na nowe funkcje, pytania społeczności czy pokazywanie efektów pracy. Każde repozytorium może mieć kilka kategorii dyskusji z własnymi zasadami i moderatorami, co ułatwia organizację rozmów. Discussions świetnie uzupełniają Wiki i Issues, tworząc kompletny ekosystem komunikacyjny wokół projektu.

40/50
Gwiazdki i Obserwowanie
  • Star: Polubienie i dodanie do listy ulubionych.
  • Watch: Powiadomienia o każdym nowym commitie.
  • Liczba gwiazdek pokazuje popularność projektu.
  • Wspieraj autorów narzędzi, których używasz.
Slide 40

Gwiazdki na GitHubie to odpowiednik polubień w mediach społecznościowych, ale ich znaczenie wykracza daleko poza prosty wskaźnik popularności. Liczba gwiazdek jest często używana jako miara wiarygodności i jakości projektu — repozytoria z tysiącami gwiazdek są uznawane za sprawdzone i godne zaufania. Dla twórców projektów open source gwiazdki są formą uznania i motywacji, a także wskaźnikiem, że ich praca jest wartościowa dla społeczności. GitHub wykorzystuje gwiazdki również w swoim algorytmie rekomendacji, pokazując użytkownikom popularne projekty na stronie Explore i w przypisanych do nich kategoriach.

Obserwowanie (Watching) repozytorium ma bardziej praktyczne zastosowanie — pozwala na śledzenie aktywności w projekcie i otrzymywanie powiadomień o nowych Issues, Pull Requestach i wydaniach. Możesz wybrać poziom obserwowania: tylko wydania (Releases only), tylko główne zdarzenia (Custom) lub wszystkie aktywności (Watching). Dla projektów, które chcesz śledzić bez zapychania skrzynki odbiorczej, GitHub oferuje również funkcję Notifications, gdzie możesz filtrować powiadomienia według priorytetu i rodzaju aktywności. Strategiczne zarządzanie obserwowanymi projektami pozwala być na bieżąco z rozwojem ulubionych narzędzi i bibliotek bez przeciążenia informacyjnego.

41/50
Edycja plików online
  • Możesz edytować kod bezpośrednio w przeglądarce.
  • Ciekawostka: Naciśnij kropkę (.) będąc w repozytorium na GitHubie.
  • Otworzy się pełny edytor VS Code działający w chmurze!
  • To bardzo wygodne dla szybkich poprawek literówek czy dokumentacji.
Slide 41

Edycja plików bezpośrednio na GitHubie przez interfejs webowy to funkcja, która sprawdza się w przypadku drobnych poprawek, ale nie zastąpi pełnoprawnego środowiska programistycznego. Podczas edycji pliku GitHub wyświetla podgląd zmian w formacie diff i umożliwia utworzenie commita bezpośrednio w gałęzi lub automatyczne utworzenie Pull Requesta. Jest to szczególnie przydatne przy poprawianiu literówek w dokumentacji, aktualizowaniu plików konfiguracyjnych czy szybkim dodawaniu komentarzy w README. Naciśnięcie klawisza kropki (.) podczas przeglądania repozytorium uruchamia webową wersję VS Code, która oferuje znacznie więcej możliwości niż prosty edytor tekstu.

Zaawansowaną formą edycji online jest GitHub Codespaces — wirtualne środowisko deweloperskie działające w chmurze, które uruchamia pełny VS Code w przeglądarce. Codespaces pozwala na programowanie z dowolnego urządzenia bez konieczności instalowania narzędzi, co jest idealne dla studentów pracujących na różnych komputerach lub tabletach. Każdy Codespace jest izolowanym kontenerem z własnym systemem plików, zainstalowanymi zależnościami i dostępem do terminala, co daje w pełni funkcjonalne środowisko pracy. Darmowy plan GitHuba obejmuje ograniczoną liczbę godzin Codespaces, co w zupełności wystarcza do nauki i małych projektów.

42/50
Zadanie 2: Współpraca
  • Dobierzcie się w pary projektowe.
  • Właściciel dodaje kolegę jako Współtwórcę.
  • Kolega robi push pliku do repozytorium.
  • Weryfikacja zmian po obu stronach.
  • Zrozumienie modelu pracy w małym zespole.
Slide 42

Zadanie współpracy na GitHubie to praktyczny trening umiejętności, które będą Ci towarzyszyć przez całą karierę zawodową. Praca w parze lub grupie nad wspólnym repozytorium wymaga ustalenia jasnego protokołu komunikacji i synchronizacji — kto pracuje nad którą częścią kodu, jak często wykonuje push i jak rozwiązywać konflikty, gdy dwie osoby zmodyfikują ten sam plik. W tym zadaniu celowo stworzymy sytuację konfliktową, aby nauczyć Cię rozwiązywania jej za pomocą narzędzi Git i GitHub. Konflikt scalania nie jest błędem, ale naturalną konsekwencją równoległej pracy i umiejętność jego rozwiązania jest jedną z kluczowych kompetencji programisty zespołowego.

Podczas rozwiązywania konfliktu zobaczysz w pliku znaczniki <<<<<<<, ======= i >>>>>>>, które oddzielają Twoją wersję od wersji drugiej osoby. Należy ręcznie wybrać, które zmiany zachować, usunąć znaczniki konfliktu i utworzyć commit scalający. W praktyce warto komunikować się z drugą osobą podczas rozwiązywania konfliktu, aby upewnić się, że wybrane rozwiązanie satysfakcjonuje obie strony. Po pomyślnym zakończeniu zadania będziesz mieć praktyczne doświadczenie w pracy zespołowej z GitHubem, które jest jednym z najczęściej wymaganych przez pracodawców oczekiwań.

43/50
Jak organizować nazwy?
  • Używaj małych liter (lowercase).
  • Zamiast spacji używaj myślników (kebab-case).
  • Unikaj polskich znaków diakrytycznych.
  • Przykłady: kalkulator-cen, projekt-semestralny.
  • Porządek ułatwia pracę w konsoli.
Slide 43

Konsekwentne nazewnictwo w projektach programistycznych to pozornie błahy detal, który w praktyce ma ogromny wpływ na czytelność i utrzymywalność kodu. Na GitHubie zasady nazewnictwa dotyczą nie tylko zmiennych i funkcji w kodzie, ale przede wszystkim nazw repozytoriów, gałęzi, tagów i commitów. Dla nazw gałęzi przyjęło się używać konwencji, która wskazuje na typ zmiany: feature/dodawanie-logowania, bugfix/naprawa-bledu, hotfix/krytyczna-naprawa. GitHub automatycznie tworzy Pull Requesty z przyjaznymi nazwami, ale zadbanie o jasne i opisowe nazwy gałęzi i commitów znacząco ułatwia pracę zespołową i przeglądanie historii projektu.

Konwencja Conventional Commits wprowadza ustrukturyzowany format wiadomości commitów, który jest szeroko stosowany w profesjonalnych projektach. Format zaczyna się od typu zmiany: feat (nowa funkcja), fix (naprawa błędu), docs (zmiana dokumentacji), refactor (refaktoryzacja), test (dodanie testów) lub chore (zmiany porządkowe). Po typie następuje dwukropek i opis w języku angielskim lub polskim, a opcjonalnie w nawiasie można dodać informację o module, którego dotyczy zmiana. Ten standard pozwala narzędziom automatycznym generować changelogi i określać, która wersja numeru semantycznego (major, minor, patch) powinna być nadana przy kolejnym wydaniu.

44/50
GitHub Desktop
  • Oficjalny program graficzny GitHub Desktop.
  • Pozwala na "klikanie" operacji zamiast komend.
  • Bardzo przejrzysty dla początkujących studentów.
  • Docelowo warto znać terminal dla większej swobody.
Slide 44

GitHub Desktop to graficzna nakładka na Gita stworzona przez zespół GitHuba, która znacząco obniża próg wejścia dla osób niezaznajomionych z linią komend. Program oferuje przejrzysty interfejs do wykonywania najważniejszych operacji: tworzenia commitów, przełączania gałęzi, rozwiązywania konfliktów i synchronizacji z zdalnym repozytorium. Jedną z największych zalet GitHub Desktop jest wizualizacja zmian w plikach — zobaczysz dokładnie, które linie zostały dodane, usunięte lub zmodyfikowane, co ułatwia zrozumienie efektów każdej operacji. Narzędzie jest dostępne na Windows i macOS, a od niedawna także w wersji na system Linux.

Alternatywne narzędzia GUI, takie jak Sourcetree (Atlassian), GitKraken czy Git Extensions, oferują podobną funkcjonalność, każdy z nieco innym podejściem do interfejsu i zestawem funkcji. GitKraken wyróżnia się wizualizacją historii w formie grafu oraz wbudowanym edytorem do rozwiązywania konfliktów, podczas gdy Sourcetree jest cenione za integrację z systemem Bitbucket i zaawansowane opcje zarządzania gałęziami. Niezależnie od wyboru narzędzia, warto pamiętać, że znajomość konsolowego Gita pozostaje cenną umiejętnością, ponieważ tylko w terminalu masz dostęp do wszystkich zaawansowanych opcji, a także możesz pracować na zdalnych serwerach przez SSH.

45/50
Sponsoring
  • GitHub Sponsors: Wsparcie finansowe twórców.
  • Wiele narzędzi darmowych wymaga nakładów pracy.
  • Kultura wdzięczności w ekosystemie Open Source.
  • Gwiazdkowanie to pierwszy krok do wsparcia.
Slide 45

GitHub Sponsors to program, który umożliwia bezpośrednie wsparcie finansowe twórców open source, z pominięciem pośredników i przy minimalnych opłatach transakcyjnych. Dla twórców projektów open source Sponsoring zapewnia stabilne źródło dochodu, które pozwala poświęcić więcej czasu na rozwój i utrzymanie projektu. Sponsorowanie może mieć formę jednorazową lub cykliczną, a GitHub nie pobiera prowizji od wpłat w pierwszym roku, co zachęca do korzystania z tej formy wsparcia. Twórcy mogą oferować sponsorom dodatkowe korzyści, takie jak dostęp do zamkniętych kanałów komunikacji, wcześniejszy dostęp do nowych funkcji czy bezpośrednie konsultacje techniczne.

Aby włączyć Sponsoring w swoim projekcie, musisz utworzyć plik .github/FUNDING.yml, w którym określasz preferowane platformy płatności i linki do profili sponsorskich. Możesz łączyć wiele platform, takich jak GitHub Sponsors, Buy Me a Coffee, Patreon czy PayPal, dając społeczności wybór preferowanej metody wsparcia. Dla studentów i początkujących programistów Sponsoring może nie być jeszcze istotny, ale warto wiedzieć o tej możliwości na przyszłość. Nawet jeśli sam nie korzystasz ze sponsoringu, rozważ wsparcie finansowe projektów open source, z których regularnie korzystasz — to inwestycja w ekosystem, który napędza całą branżę IT.

46/50
Student Developer Pack
  • GitHub Education oferuje darmowy pakiet narzędzi.
  • Darmowe konto Pro, Copilot i kredyty chmurowe.
  • Wystarczy potwierdzić status studenta uczelni.
  • Najlepsza okazja na profesjonalny start za darmo.
Slide 46

GitHub Student Developer Pack to jeden z najbardziej wartościowych zestawów narzędzi dostępnych za darmo dla społeczności akademickiej. Po potwierdzeniu statusu studenta otrzymujesz dostęp do profesjonalnych narzędzi, które normalnie kosztują setki dolarów rocznie — w tym darmowe domeny (name.com), hosting (DigitalOcean, Heroku), IDE (JetBrains, VS Code) oraz zaawansowane narzędzia CI/CD. W pakiecie znajduje się również darmowy dostęp do GitHub Copilot, który jest asystentem AI pomagającym w pisaniu kodu, oraz do GitHub Pro, który oferuje nieograniczoną liczbę współpracowników w repozytoriach prywatnych i bardziej zaawansowane funkcje analityczne. Łączna wartość narzędzi w pakiecie przekracza 1000 dolarów rocznie, co czyni go niezwykle opłacalnym dla każdego studenta informatyki.

Aby uzyskać dostęp do pakietu, wejdź na stronę education.github.com, zaloguj się na swoje konto GitHub i wypełnij formularz aplikacyjny, podając dane swojej uczelni i adres e-mail w domenie akademickiej. Proces weryfikacji może trwać od kilku dni do dwóch tygodni, dlatego warto złożyć wniosek jak najwcześniej. Po zatwierdzeniu otrzymasz dostęp do wszystkich narzędzi na okres trwania studiów, z możliwością odnowienia w każdym kolejnym roku akademickim. Wykorzystaj ten pakiet maksymalnie — uruchom własny serwer na DigitalOcean, poznaj profesjonalne IDE od JetBrains i naucz się automatyzować projekty z GitHub Actions, rozwijając umiejętności, które będą kluczowe w Twojej przyszłej pracy.

47/50
Dobre nawyki
  • Używaj opisowych komunikatów zatwierdzeń (commit messages).
  • Utrzymuj porządek w plikach README.md i .gitignore.
  • Dobra praktyka: Pisz opisy zatwierdzeń w języku angielskim (opcjonalne, ale zalecane w branży).
  • Zawsze czyść kod (usuwaj zbędne komentarze, testowe printy) przed wysłaniem go do chmury.
Slide 47

Dobre nawyki pracy z Gitem i GitHubem to inwestycja, która zwróci się wielokrotnie w trakcie Twojej kariery programisty. Jedną z najważniejszych zasad jest wykonywanie małych, atomowych commitów, które dotyczą jednej logicznej zmiany — ułatwia to przeglądanie historii, wycofywanie zmian i zrozumienie ewolucji projektu. Commity zapisuj w czasie teraźniejszym, w formie polecenia (Add login validation, Fix null pointer exception), co jest standardem przyjętym w całej społeczności Git. Regularne commitowanie i pushowanie zmian, nawet kilka razy dziennie, minimalizuje ryzyko utraty pracy i ułatwia synchronizację z zespołem.

Kolejnym ważnym nawykiem jest regularne aktualizowanie swojej gałęzi roboczej względem gałęzi głównej, szczególnie przed zgłoszeniem Pull Requesta. Długotrwała praca na rozgałęzionej gałęzi bez synchronizacji prowadzi do trudnych do rozwiązania konfliktów i może skutkować koniecznością przepisania dużej ilości kodu. Warto również czyścić lokalne gałęzie po ich scaleniu (git branch -d nazwa_galezi), aby utrzymać porządek i uniknąć zagubienia wśród starych, nieużywanych gałęzi. Systematyczne stosowanie tych nawyków sprawi, że praca z Gitem będzie płynna i przyjemna, a Ty zyskasz reputację programisty, z którym łatwo się współpracuje.

48/50
Podsumowanie części 2
  • Znamy różnice między Gitem a GitHubem.
  • Umiemy stworzyć repozytorium i plik README.md.
  • Potrafimy skonfigurować bezpieczny dostęp (tokeny PAT oraz klucze SSH).
  • Znamy podstawowe komendy: git push, git pull, git clone.
  • Wiemy, do czego służy i jak skonfigurować plik .gitignore.
Slide 48

Podsumowując drugą część wykładu, warto podkreślić, że opanowałeś kluczowe umiejętności, które stanowią fundament profesjonalnej pracy z kodem w chmurze. Od zakładania konta, przez konfigurację bezpiecznego dostępu, aż po publikację kodu i pracę zespołową — każdy z tych elementów jest niezbędny w codziennej praktyce programistycznej. Szczególnie ważne jest zrozumienie mechanizmów bezpieczeństwa, takich jak tokeny PAT i klucze SSH, które w profesjonalnym środowisku są standardem i bez których nie obejdzie się żaden projekt komercyjny. Równie istotna jest umiejętność korzystania z Issues i Pull Requestów, które stanowią rdzeń procesu współpracy na GitHubie.

Pamiętaj, że to, czego się dziś nauczyłeś, to dopiero wierzchołek góry lodowej możliwości, jakie oferuje GitHub. W kolejnych wykładach poznasz zaawansowane techniki pracy z gałęziami, nauczysz się rozwiązywać konflikty, automatyzować procesy za pomocą GitHub Actions oraz zarządzać projektami w większych zespołach. Zachęcam Cię do eksperymentowania i samodzielnego odkrywania funkcji platformy — najlepszym sposobem na utrwalenie wiedzy jest praktyka i popełnianie błędów w bezpiecznym środowisku. Twoja aktywność na GitHubie jest inwestycją w przyszłość, która otworzy przed Tobą drzwi do najlepszych zespołów i projektów w branży IT.

49/50
Twoje zadanie domowe
  • Załóż konto i skonfiguruj klucz SSH.
  • Prześlij projekt z zajęć do swojego repozytorium.
  • Zadbaj o ładny README z opisem projektu.
  • Dostarcz link do oceny Twojej pracy.
Slide 49

Twoje zadanie domowe zostało zaprojektowane tak, aby w praktyce utrwalić wszystkie umiejętności, które poznałeś podczas dzisiejszego wykładu. Zakładając konto i konfigurując klucz SSH, przejdziesz przez proces autentykacji, który jest standardem w każdym profesjonalnym projekcie. Przesyłając projekt z zajęć do repozytorium, wykonasz pierwszy pełny cykl pracy z GitHubem — od inicjalizacji repozytorium, przez dodanie plików, aż po publikację w chmurze. Tworzenie estetycznego README nauczy Cię dokumentowania projektu w sposób, który przyciąga uwagę potencjalnych pracodawców i współpracowników. Pamiętaj, że jakość Twojego repozytorium i sposób, w jaki je zaprezentujesz, mają bezpośredni wpływ na to, jak jesteś postrzegany w środowisku IT.

Ocenie podlegać będzie nie tylko poprawność techniczna, ale także czytelność i kompletność Twojego repozytorium. Upewnij się, że plik README zawiera tytuł projektu, krótki opis, instrukcję uruchomienia oraz informację o autorze. Jeśli Twój projekt wymaga dodatkowych bibliotek, dołącz plik requirements.txt lub package.json, a także skonfiguruj .gitignore, aby nie wysyłać zbędnych plików na GitHub. Wykonanie tego zadania solidnie i samodzielnie zagwarantuje, że jesteś gotowy do kolejnych, bardziej zaawansowanych tematów. Powodzenia!

50/50
Dziękuję za uwagę!
  • To koniec drugiej części wykładu.
  • Następny temat: Gałęzie i rozwiązywanie konfliktów.
  • Pytania zapraszam do zadawania teraz!
Slide 50

Dotarłeś do końca drugiego wykładu, co jest dowodem Twojego zaangażowania i determinacji w nauce nowoczesnych narzędzi programistycznych. Wiedza, którą zdobyłeś na temat GitHuba, otwiera przed Tobą możliwość aktywnego uczestnictwa w globalnej społeczności programistów i dostępu do milionów projektów open source. Pamiętaj, że każdy ekspert zaczynał dokładnie w tym samym miejscu co Ty — od pierwszego, niepewnego pusha i pierwszego Pull Requesta. To, co wyróżnia najlepszych programistów, to nie wrodzony talent, ale systematyczność, ciekawość i gotowość do ciągłego uczenia się nowych technologii i narzędzi.

W następnym wykładzie zajmiemy się tematem gałęzi w Git, który jest jednym z najważniejszych i najbardziej użytecznych aspektów kontroli wersji. Nauczysz się tworzyć gałęzie, łączyć je i rozwiązywać konflikty, co pozwoli Ci na swobodną pracę nad wieloma funkcjami jednocześnie bez ryzyka uszkodzenia stabilnego kodu. Do zobaczenia na kolejnym spotkaniu, a jeśli masz jakiekolwiek pytania lub wątpliwości, nie wahaj się ich zadać — społeczność GitHub i Twoi wykładowcy są po to, aby Ci pomóc w tej fascynującej podróży przez świat nowoczesnego programowania.