1/50
Finał: Zaawansowane funkcje i dobre praktyki
  • Witamy na ostatniej części naszego cyklu o systemie Git i platformie GitHub.
  • Przeszliśmy drogę od pierwszego zatwierdzenia (commit) do pracy zespołowej.
  • Dziś nauczymy się, jak automatyzować naszą pracę (CI/CD).
  • Poznamy sekrety profesjonalnej dokumentacji technicznej.
  • Zrozumiemy zasady etykiety w świecie Open Source.
  • Omówimy standardy, które odróżniają amatora od profesjonalisty.
  • Zadbamy o bezpieczeństwo Twojego kodu i danych wrażliwych.
Slide 1

Cykl wykladow o Git i GitHub zostal zaprojektowany tak, aby przeprowadzic studenta od absolutnych podstaw do zaawansowanych technik pracy zespolowej i automatyzacji. Ostatnia czesc koncentruje sie na narzedziach i praktykach, ktore odrozniaja swiadomego inzyniera oprogramowania od poczatkujacego entuzjasty. Znajomosc CI/CD, bezpiecznego zarzadzania danymi oraz standardow komunikacji w zespole to dzisiaj absolutne minimum wymagane w branzy IT.

W ramach tego wykladu zostana omowione zagadnienia zwiazane z GitHub Actions, GitHub Pages, zarzadzaniem wersjami, konwencjami commitow oraz etyka w projektach Open Source. Student pozna rowniez narzedzia sluzace do utrzymania bezpieczenstwa kodu, takie jak Dependabot, oraz metody radzenia sobie z kryzysowymi sytuacjami, jak przypadkowe wyslanie hasla do repozytorium. Kazde z tych zagadnien zostanie zilustrowane przykladami z codziennej pracy programistycznej.

2/50
Wprowadzenie do CI/CD
  • CI (Continuous Integration): Ciągła Integracja. Automatyczne testowanie kodu po każdym `push`.
  • CD (Continuous Deployment): Ciągłe Wdrażanie. Automatyczna publikacja działającej wersji na serwerze.
  • Celem jest wykrycie błędów jak najwcześniej – zanim trafią do użytkowników.
  • Zapewnia pewność, że nowy kod nie psuje starych funkcjonalności.
  • Oszczędza czas deweloperów na powtarzalne czynności (jak ręczne uruchamianie testów).
  • Współczesne IT nie istnieje bez rzetelnych procesów CI/CD.
Slide 2

CI/CD to fundament nowoczesnego wytwarzania oprogramowania, ktory pozwala na szybkie i bezpieczne dostarczanie zmian do uzytkownikow. Continuous Integration zaklada, ze kazdy programista laczy swoje zmiany z glowna galezia co najmniej raz dziennie, a kazde takie polaczenie jest automatycznie weryfikowane przez testy. Dzieki temu bledy sa wykrywane natychmiast, a nie dopiero po kilku tygodniach pracy. To podejscie eliminuje zjawisko integracji agony, czyli bolu zlaczania rozbieznych wersji kodu przed wydaniem.

Continuous Deployment idzie o krok dalej i automatyzuje proces wdrazania zaakceptowanego kodu na srodowisko produkcyjne. W praktyce czesto stosuje sie Continuous Delivery, gdzie ostatni krok - wdrozenie na produkcje - wymaga recznego zatwierdzenia. Pipeline CI/CD sklada sie zazwyczaj z etapow: linting, kompilacja, testy jednostkowe, testy integracyjne, budowanie artefaktow i wdrozenie.

3/50
GitHub Actions – Twój robot w chmurze
  • GitHub Actions to potężne narzędzie do automatyzacji procesów wewnątrz Twojego repozytorium.
  • Może wykonywać dowolne skrypty w odpowiedzi na zdarzenia (np. push, Pull Request).
  • Nie musisz utrzymywać własnych serwerów – GitHub daje Ci maszyny (Runners).
  • Działa w oparciu o prosty format konfiguracji YAML.
  • Pozwala na automatyczne testowanie, budowanie i publikowanie aplikacji.
  • Jest darmowe dla projektów publicznych i studentów (Student Pack).
Slide 3

GitHub Actions to usluga oferowana przez GitHub, ktora umozliwia uruchamianie zadan w odpowiedzi na zdarzenia w repozytorium. Runnerzy to maszyny wirtualne, na ktorych wykonywane sa poszczegolne kroki workflow. GitHub udostepnia darmowe minuty obliczeniowe dla repozytoriow publicznych oraz dla posiadaczy GitHub Student Developer Pack. Istnieje rowniez mozliwosc uruchomienia wlasnych runnerow na wlasnym sprzecie.

Pliki workflow w formacie YAML pozwalaja na deklaratywne okreslenie calego procesu. YAML jest czytelny dla czlowieka i nie wymaga znajomosci zadnego jezyka programowania. W workflow mozna uzywac gotowych akcji z GitHub Marketplace. Tworzenie wlasnych akcji jest rowniez mozliwe i stanowi dobry sposob na wielokrotne wykorzystanie powtarzalnej logiki.

4/50
Jak działa Workflow?
  • Workflow to plik `.yml` zapisany w folderze `.github/workflows/`.
  • Składa się z trzech głównych elementów:
  • 1. Events (on): Co uruchamia robota? (np. `on: push`).
  • 2. Jobs: Zadania do wykonania (np. "uruchom testy").
  • 3. Steps: Konkretne kroki (np. "zainstaluj Pythona", "wykonaj skrypt").
  • Możesz mieć wiele workflowów do różnych celów w jednym projekcie.
Slide 4

Struktura workflow w GitHub Actions opiera sie na trzech kluczowych poziomach hierarchii. Zdarzenia (events) determinuja, kiedy workflow zostanie uruchomiony - moze to byc push do konkretnej galezi, utworzenie Pull Requesta, opublikowanie releasea, a nawet reczne wywolanie. Workflow moze reagowac na kilkadziesiat roznych typow zdarzen.

Zadania (jobs) domyslnie uruchamiaja sie rownolegle, ale moga byc skonfigurowane do wykonywania sekwencyjnego za pomoca zaleznosci (needs). Wazna funkcjonalnoscia jest mozliwosc definiowania macierzy (matrix), ktora pozwala na testowanie kodu na wielu wersjach jezyka lub systemu operacyjnego.

5/50
Przykład: Automatyczne testy Python
                name: Python-Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with: {python-version: '3.10'}
      - name: Run tests
        run: python -m pytest
  • Za każdym razem, gdy wyślesz kod, GitHub sprawdzi, czy testy przechodzą.
Slide 5

Prezentowany przyklad workflow dla Pythona pokazuje, jak w kilkunastu linijkach YAML skonfigurowac automatyczne testowanie kodu. Akcja actions/checkout@v3 pobiera kod z repozytorium, a actions/setup-python@v4 instaluje wybrana wersje Pythona. Mozna uzyc macierzy testujac na wersjach 3.9, 3.10 i 3.11.

W ostatnim kroku uruchamiane sa testy poleceniem python -m pytest. W praktyce warto dodac instalacje zaleznosci i uruchomienie lintera. Workflow mozna rozszerzyc o generowanie raportu z pokrycia kodu.

6/50
Budowanie prestiżu: Badges (Odznaki)
  • Odznaki (Badges) to małe ikonki w pliku README.md informujące o stanie projektu.
  • Pokazują np.: „Build: passing”, „Tests: 100% ok”, „Version 2.0”.
  • Dodają Twojemu repozytorium profesjonalnego charakteru.
  • Natychmiast informują użytkownika, czy kod w ogóle działa.
  • Pobierane są dynamicznie z GitHub Actions po każdym wykonaniu skryptu.
  • Warto je dodać do swojego profilowego README, by pochwalić się umiejętnościami.
Slide 6

Badges to maly, ale wazny element profesjonalnego repozytorium, ktory dostarcza kluczowych informacji na pierwszy rzut oka. Najpopularniejsze odznaki dotycza statusu builda, pokrycia kodu testami, wersji oprogramowania i licencji. Odznaki sa generowane dynamicznie przez shields.io.

Umieszczenie odznak w README.md to sygnal dla uzytkownikow, ze projekt jest utrzymywany profesjonalnie. W przypadku GitHub Actions odznaka jest generowana automatycznie. Zepsuta odznaka moze odstraszyc potencjalnych uzytkownikow.

7/50
GitHub Pages: Twoja witryna w 5 minut
  • Mechanizm darmowego hostingu dla statycznych plików HTML/CSS/JS.
  • Stworzony do dokumentacji, portfolio lub stron projektowych.
  • Strona jest dostępna pod adresem: `użytkownik.github.io/repozytorium/`.
  • Możesz użyć generatora Jekyll, aby stworzyć eleganckie wiki lub bloga.
  • Wymaga jedynie włączenia opcji w zakładce `Settings -> Pages`.
  • Bardzo przydatne na studiach do prezentacji wyników projektów.
Slide 7

GitHub Pages pozwala na hostowanie statycznych stron bezposrednio z repozytorium. To idealne rozwiazanie dla dokumentacji, portfolio i blogow. Pages obsluguje generowanie statyczne przez Jekyll - strony w Markdown sa automatycznie przetwarzane na HTML.

Aby uruchomic Pages, wlacz opcje w ustawieniach i wybierz galez. Strona jest publikowana po kazdym pushu. GitHub oferuje wlasna domenę i certyfikat SSL w ramach bezplatnego planu.

8/50
GitHub Wiki – Rozbudowana dokumentacja
  • Gdy README.md staje się zbyt długi, użyj zakładki Wiki.
  • Każde repozytorium ma własną przestrzeń na wielostronicową pomoc.
  • To osobne mikro-repozytorium, które możesz edytować także przez Git.
  • Idealne na instrukcje instalacji, specyfikacje techniczne i tutoriale.
  • Dobra dokumentacja sprawia, że Twój projekt jest chętniej używany przez innych.
  • Wiki jest widoczne publicznie i ułatwia poruszanie się po dużym projekcie.
Slide 8

GitHub Wiki to dokumentacja uzupelniajaca README o szczegolowe informacje techniczne. Wiki jest oddzielnym repozytorium z wlasna historia zmian. Sprawdza sie w projektach, gdzie README jest zbyt dlugi.

Dobra dokumentacja techniczna obniza koszty wsparcia. Wazne jest utrzymywanie Wiki w aktualnosci. Warto wyznaczyc osobe odpowiedzialna za dokumentacje.

9/50
Utrzymuj porządek: .github/ folder
  • To specjalny folder w Twoim projekcie na pliki systemowe GitHub.
  • Tu trzymamy procesy (Workflows), szablony zgłoszeń (Issue Templates) i zasady PR.
  • Plik `CONTRIBUTING.md` – mówi innym, jak mogą pomóc w rozwoju kodu.
  • Plik `CODEOWNERS` – definiuje, kto automatycznie ma sprawdzać dany kod.
  • Dobra organizacja tego folderu świadczy o dojrzałości projektu.
  • GitHub automatycznie wykrywa te pliki i wyświetla we właściwych miejscach.
Slide 9

Folder .github/ to standardowe miejsce plikow konfiguracyjnych GitHub. Umieszcza sie w nim workflowy, szablony Issues i Pull Requestow ujednolicajace proces zglaszania problemow.

CONTRIBUTING.md opisuje konwencje kodowania i proces recenzji. CODEOWNERS definiuje odpowiedzialnych za poszczegolne czesci kodu. Te mechanizmy sa kluczowe w projektach zespolowych.

10/50
Zasady Open Source – Dlaczego warto?
  • Open Source to nie tylko darmowy kod. To społeczność i wspólny rozwój.
  • Pomoc w znanych projektach to najlepszy wpis do CV programisty.
  • Nauczysz się pracować z kodem najwyższej jakości pisanym przez ekspertów.
  • Oszczędzasz czas, nie wymyślając koła na nowo.
  • Budujesz globalną sieć znajomości w branży IT.
  • Pomagając innym, sam stajesz się lepszym specjalistą.
Slide 10

Open Source to model, w ktorym kod jest publicznie dostepny i moze byc modyfikowany. Najwieksze platformy to GitHub, GitLab i Bitbucket. Udzial w Open Source to nauka od najlepszych i budowanie marki.

Korzystanie z Open Source w projektach komercyjnych wymaga swiadomosci licencji - od permisywnych (MIT, Apache) po restrykcyjne (GPL). Wybor licencji ma konsekwencje prawne.

11/50
Etykieta Open Source
  • Zawsze czytaj `README` i `CONTRIBUTING` zanim cokolwiek zrobisz.
  • Przed napisaniem kodu otwórz `Issue`, aby omówić pomysł z autorami.
  • Bądź cierpliwy – autorzy projektów często pracują charytatywnie po godzinach.
  • Jeśli znajdziesz błąd, opisz go precyzyjnie (z logami i krokami do odtworzenia).
  • Szanuj styl kodowania przyjęty w danym projekcie.
  • Nie żądaj niczego – zaproponuj pomoc. "Wdzięczność" to waluta Open Source.
Slide 11

Etykieta w Open Source to zasady ulatwiajace wspolprace miedzy kulturami. Podstawa to szacunek dla czasu autorow pracujacych charytatywnie. Przed pytaniem sprawdz dokumentacje i istniejace Issues.

Pull Request powinien byc opisany, a kod zgodny ze stylem projektu. Komunikacja rzeczowa i konkretna ma wieksze szanse na akceptacje.

12/50
Hacktoberfest i inne inicjatywy
  • Coroczna akcja (w październiku) promująca udział w Open Source.
  • Za zrobienie kilku Pull Requestów możesz dostać darmowe gadżety lub posadzić drzewo.
  • Istnieje wiele tagów jak `help-wanted` czy `good-first-issue`.
  • To idealny moment, aby przełamać strach i wysłać swój pierwszy kod do wielkiego projektu.
  • Możesz zacząć od poprawy literówki w dokumentacji – to też jest ważne!
Slide 12

Hacktoberfest to coroczna inicjatywa promujaca Open Source. Za cztery PRy w pazdzierniku uczestnicy otrzymuja koszulke. Dla wielu to pierwszy krok w swiat Open Source.

Inne inicjatywy to good first issue i help wanted. Google Summer of Code i Outreachy oferuja platne staze - doswiadczenie i certyfikat do CV.

13/50
Dobre praktyki: Atomic Commits
  • Zatwierdzenie (commit) atomowe to zmiana skupiona na jednej, konkretnej rzeczy.
  • Źle: „Poprawiłem style, dodałem bazę i zmieniłem ikonki” (wszystko w jednym).
  • Dobrze: Trzy osobne zatwierdzenia (commity), każde z jasnym celem.
  • Zalety: łatwiejsze cofanie błędów, czytelniejsza historia, brak konfliktów.
  • Zasada: Jeśli opisujesz zmianę spójnikiem „i”, prawdopodobnie powinny to być dwa zatwierdzenia.
  • Dążymy do tego, by każdy commit pozostawiał projekt w stanie działającym.
Slide 13

Atomowe zatwierdzenia to kluczowa zasada Gita. Kazdy commit powinien byc samodzielna jednostka zmiany ulatwiajaca cofanie i zrozumienie intencji autora.

git add -p umozliwia precyzyjny wybor fragmentow do commita. Atomowe commity ulatwiaja code review i pomagaja okreslic przyczyne regresji w CI/CD.

14/50
Standard: Conventional Commits
  • To powszechny standard pisania komunikatów zrozumiały dla ludzi i robotów.
  • Budowa: typ: opis
  • `feat:` Nowa funkcja.
  • `fix:` Naprawa błędu.
  • `docs:` Zmiana w dokumentacji.
  • `style:` Zmiana formatowania, brak zmian w logice.
  • `refactor:` Ulepszenie kodu, niezmieniające funkcjonalności.
  • Przykład: `feat: dodanie walidacji formularza logowania`.
Slide 14

Conventional Commits to standard formatowania komunikatow z typem (feat, fix, docs) i opisem. Typy okreslaja charakter zmiany.

Standard sluzy do automatycznego generowania changelogow i wersji semantycznej. Narzedzia jak semantic-release automatyzuja proces wydawniczy.

15/50
Bezpieczeństwo: GitHub Secrets
  • Nigdy nie wpisuj haseł i kluczy API bezpośrednio w kodzie!
  • GitHub oferuje bezpieczny schowek w `Settings -> Secrets`.
  • Zapisane tam dane są szyfrowane i niedostępne dla osób postronnych.
  • Twoje skrypty (np. w GitHub Actions) mogą ich używać bez ich wyświetlania.
  • Pamiętaj o `.gitignore` dla lokalnych plików z hasełami (np. `.env`).
  • Wyciek klucza do chmury (AWS/Google) może kosztować majątek w kilka minut.
Slide 15

Bezpieczenstwo danych dostepowych to kluczowy aspekt. Hasla w kodzie to naruszenie - Git pamieta kazda wersje. GitHub skanuje repozytoria w poszukiwaniu wyciekow.

GitHub Secrets umozliwia bezpieczne przechowywanie danych wrazliwych. Wartosci sa szyfrowane i dostepne tylko dla workflowow. Lokalnie uzywaj .env w .gitignore.

16/50
GitHub CLI (gh) – Praca w terminalu
  • Oficjalne narzędzie do zarządzania GitHubem bezpośrednio z linii komend.
  • Pozwala tworzyć repozytoria, PRy i listy Issues bez otwierania przeglądarki.
                # Stworzenie Pull Requesta z konsoli
$ gh pr create --title "Poprawka błędu" --body "Opis..."

# Sprawdzenie statusu akcji
$ gh run list
  • Bardzo przyspiesza pracę zaawansowanym programistom.
Slide 16

GitHub CLI (gh) to narzedzie do zarzadzania GitHub z terminala. Przydatne dla programistow w srodowisku tekstowym - tworzenie repozytoriow, Issues i PR.

Instalacja na wszystkie systemy. Po gh auth login mozna tworzyc PR z konsoli. Zaawansowani tworza aliasy automatyzujace zadania.

17/50
Integracja z VS Code
  • VS Code ma natywne wsparcie dla Gita i doskonałe rozszerzenia dla GitHuba.
  • Możesz robić `commit`, `push` i `pull` za pomocą UI.
  • Rozszerzenie "GitHub Pull Requests and Issues" pozwala recenzować kod bez opuszczania edytora.
  • Zintegrowany widok `diff` ułatwia zrozumienie zmian przed ich zatwierdzeniem.
  • Visual Studio Code to obecnie najpopularniejszy wybór dla programistów Git.
Slide 17

VS Code to najpopularniejszy edytor z integracja Gita. Panel Source Control pokazuje zmiany i umozliwia zatwierdzanie. Rozszerzenie GitHub PR dodaje recenzowanie w edytorze.

Edytor oferuje wizualne diff i rozwiazywanie konfliktow. GitLens dodaje git blame i historie. To narzedzie kazdego programisty.

18/50
Rozwiązywanie problemów: Zepsuta historia
  • "O nie, usunąłem złą gałąź!" – Spokojnie, Git prawie wszystko pamięta.
  • Użyj komendy `git reflog`, aby zobaczyć każdy ruch Twojego wskaźnika (HEAD).
  • `reflog` pokaże Ci hashe commitów, które już nie istnieją w normalnym logu.
  • Możesz "wskoczyć" w dowolny moment z przeszłości i uratować swoją pracę.
  • Należy jednak pamiętać, że `reflog` jest tylko lokalny i ma ograniczony czas życia.
Slide 18

git reflog przechowuje historie ruchow HEAD - commity, przejscia miedzy galeziami i scalania. Jest lokalny i nie wysylany na serwer.

Reflog umozliwia odzyskanie commitow po git reset --hard. Zyje domyslnie 90 dni, potem garbage collection usuwa obiekty.

19/50
Czyszczenie wrażliwych danych
  • Jeśli przez pomyłkę wyślesz hasło do historii, zwykły commit go nie skasuje.
  • Będziesz potrzebował narzędzi do "przepisywania historii" jak BFG Repo-Cleaner lub `git filter-repo`.
  • Te narzędzia skanują całą historię i trwale usuwają wybrane pliki lub frazy.
  • To operacja destrukcyjna – wszyscy członkowie zespołu będą musieli pobrać projekt na nowo.
  • Zasada: Zawsze traktuj hasło wysłane do Gita jako "spalone" i natychmiast je zmień.
Slide 19

Usuwanie wrazliwych danych z historii Gita jest trudne. Skasowanie pliku nie wystarczy - dane pozostaja w historii. BFG Repo-Cleaner lub git filter-repo to umozliwiaja.

Przepisywanie historii jest destrukcyjne i wymaga synchronizacji zespolu. Najlepsza prewencja: .gitignore i GitHub Secrets. Po wycieku uniewaznij haslo.

20/50
Model GitFlow – Przypomnienie
  • W dużych projektach nie robimy push do main.
  • Używamy gałęzi `develop` jako poligonu doświadczalnego.
  • Gdy `develop` jest stabilny, robimy "release" do `main` i nadajemy wersję (v1.0).
  • Wszystkie niespodziewane błędy na produkcji naprawiamy na gałęziach `hotfix`.
  • To zapewnia porządek i chroni użytkowników przed eksperymentami programistów.
Slide 20

GitFlow to model Driessena z 2010 roku. Okresla strukture: main, develop, feature, release i hotfix. Kazda galez ma okreslone przeznaczenie.

GitFlow sprawdza sie przy regularnych wydaniach. Przy ciaglym wdrozeniu stosuje sie prostsze modele: GitHub Flow lub Trunk-Based Development.

21/50
Zadanie domowe: CI/CD w praktyce
  • 1. Stwórz mały skrypt w ulubionym języku.
  • 2. Dodaj do niego jeden prosty test jednostkowy.
  • 3. Skonfiguruj GitHub Actions, aby uruchamiało ten test przy każdym pushu.
  • 4. Cel: Zielony ptaszek przy Twoim commicie!
  • To zadanie oddziela teoretyków od ludzi, którzy potrafią budować systemy.
Slide 21

Zadanie domowe sprawdza umiejetnosci nabyte na wykladzie. Konfiguracja CI/CD wymaga znajomosci YAML i testowania. To okazja do kontaktu z narzedziami zawodowymi.

Zwroc uwage na strukture plikow i dzialanie testow na GitHub Actions. Zielony znaczek potwierdza pipeline. Dla chetnych - odznaka w README.

22/50
git restore: Ratunek przed pomyłką
  • Git oferuje mechanizm bezpiecznego powrotu do poprzedniego stanu plików.
  • Komenda `git restore` pozwala cofnąć niezapisane zmiany w pliku roboczym.
  • Możesz przywrócić plik do wersji z ostatniego zatwierdzenia (commit).
  • Działa jak cyfrowa siatka bezpieczeństwa podczas eksperymentów z kodem.
  • Pomaga szybko usunąć błędy wprowadzone od ostatniego stabilnego punktu.
  • Zapewnia pewność, że żadna przypadkowa zmiana nie zniszczy Twojej pracy.
                # Przywrócenie pliku do stanu z ostatniego commita
$ git restore nazwa_pliku.py
Slide 22

git restore (Git 2.23) zastapil git checkout w przywracaniu plikow. Umozliwia przywrocenie pliku z indeksu lub commita. To podstawowe narzedzie do cofania zmian.

git restore --staged cofa plik z indeksu bez utraty zmian. Dla zlozonych operacji uzywaj z git switch.

23/50
Dobre praktyki: Małe i częste zmiany
  • Lepiej robić dziesięć małych commitów niż jeden gigantyczny.
  • Zasada atomowości: jeden commit rozwiązuje jeden konkretny problem.
  • Ułatwia to współpracownikom zrozumienie Twoich postępów w projekcie.
  • Zmniejsza ryzyko wystąpienia trudnych do rozwiązania konfliktów.
  • Pozwala na precyzyjne wycofywanie zmian bez tracenia innej pracy.
  • Profesjonalna historia projektu to czytelna oś czasu Twoich decyzji.
Slide 23

Male i czeste zmiany to kluczowa praktyka. Zmniejsza ryzyko bledow i ulatwia zrozumienie. Lepiej robic jedna funkcje na raz.

Korzysci: prostsze code review, latwiejsze konflikty, precyzyjne cofanie. Mala zmiana psujaca testy jest latwiejsza do debugowania.

24/50
Sztuka pisania opisów commitów
  • Opis commita powinien wyjaśniać dlaczego zmiana została wprowadzona.
  • Unikaj lakonicznych haseł typu "poprawka" czy "zmiany w kodzie".
  • Dobra wiadomość commitu ułatwia przeszukiwanie historii projektu.
  • W projektach zespołowych pomaga szybko zorientować się w stanie prac.
  • Standard Conventional Commits pomaga w automatyzacji generowania zmian (changelog).
  • Jasna komunikacja to fundament sukcesu w inżynierii oprogramowania.
                # Przykład dobrego komunikatu
$ git commit -m "feat: dodanie walidacji adresu e-mail"
Slide 24

Jakosc komunikatow commitow wplywa na uzytecznosc historii. Dobry komunikat odpowiada dlaczego, tryb rozkazujacy, do 50 znakow.

Conventional Commits dodaje prefiksy typow. Umozliwia automatyzacje changelogow. Laczenie z Issues tworzy sciezke audytowa.

25/50
Fundamenty lokalnego Gita – Podsumowanie
  • Opanowaliśmy kluczowe komendy: init, status, add, commit oraz log.
  • Wiemy jak tworzyć migawki projektu i śledzić zmiany w czasie.
  • Zrozumieliśmy różnicę między plikami śledzonymi a nieśledzonymi.
  • Potrafimy zarządzać historią zmian na własnym komputerze.
  • To solidna baza, która pozwala przejść do pracy zespołowej w chmurze.
  • Jesteśmy gotowi, by połączyć nasz kod z globalną siecią GitHub.
Slide 25

Lokalny Git to fundament. Komendy init, status, add, commit, log sa niezbedne. Bez solidnych podstaw praca zespolowa bedzie nieefektywna.

Trzy obszary: katalog roboczy, indeks, repozytorium. Indeks pozwala precyzyjnie przygotowac commita - to odroznia Gita.

26/50
Czym jest GitHub: Chmura dla programistów
  • GitHub to platforma hostingowa dla projektów wykorzystujących system Git.
  • Działa jak bezpieczny dysk w chmurze wyspecjalizowany pod kod źródłowy.
  • Umożliwia łatwą współpracę wielu osób nad tym samym projektem.
  • Jest domem dla milionów projektów Open Source z całego świata.
  • Oferuje bogaty zestaw narzędzi do zarządzania projektami i automatyzacji.
  • To miejsce, gdzie programiści budują swoją reputację i portfolio.
Slide 26

GitHub to wiecej niz hosting - srodowisko do zarzadzania cyklem zycia: planowanie, kodowanie, automatyzacja. Ponad 100 milionow repozytoriow.

Student Developer Pack: darmowe Actions, JetBrains, hosting. Wiele firm rekrutuje z GitHub. Aktywnosc buduje profil zawodowy.

27/50
Dlaczego GitHub jest kluczowy w IT?
  • Zapewnia bezpieczeństwo Twojego kodu dzięki kopiom zapasowym w chmurze.
  • Umożliwia pracę nad projektami z dowolnego miejsca na świecie.
  • Twój profil na GitHub to nowoczesne i weryfikowalne CV programisty.
  • Daje dostęp do ogromnej bazy wiedzy i bibliotek tworzonych przez ekspertów.
  • Ułatwia rekruterom ocenę Twoich realnych umiejętności technicznych.
  • Wspiera budowanie społeczności wokół Twoich własnych pomysłów.
Slide 27

GitHub buduje tozsamosc zawodowa. Profil to zrodlo prawdy o umiejetnosciach. Rekruterzy oceniaja kod, regularnosc, udzial w Open Source.

Buduj siec kontaktow przez obserwowanie i dyskusje. Dla studentow to spolecznosc z mentorami i reputacja przed kariera.

28/50
Tworzenie profesjonalnego profilu
  • Wybierz profesjonalną nazwę użytkownika (unikatową i rozpoznawalną).
  • Zadbaj o czytelne zdjęcie profilowe lub spójny awatar.
  • Uzupełnij bio, dodając informacje o technologiach, które znasz.
  • Połącz konto z innymi profesjonalnymi portalami (np. LinkedIn).
  • GitHub to Twoja wizytówka w cyfrowym świecie inżynierii.
  • Pamiętaj, że pierwsze wrażenie ma znaczenie dla przyszłych pracodawców.
Slide 28

Profil to wizytowka. Profesjonalna nazwa, czytelne zdjecie, bio z technologiami. To pomaga rekruterom ocenic dopasowanie.

Przypnij szesc repozytoriow. Repozytorium README profilu z odznakami. LinkedIn i blog tworza spojny wizerunek.

29/50
Repozytoria publiczne vs prywatne
  • Publiczne: Twój kod jest widoczny dla każdego (idealne do portfolio).
  • Promują współpracę i rozwój w duchu Open Source.
  • Prywatne: Tylko Ty i zaproszone osoby mają dostęp do plików.
  • Niezbędne do pracy nad projektami komercyjnymi lub tajnymi zadaniami.
  • GitHub pozwala na darmowe tworzenie obu typów repozytoriów.
  • Możesz łatwo zmienić widoczność repozytorium w ustawieniach projektu.
Slide 29

Publiczne repozytoria sa widoczne dla wszystkich, idealne dla Open Source i portfolio. Indeksowane przez wyszukiwarki.

Prywatne dla kodu niepublicznego. Darmowe nielimitowane prywatne repozytoria. Studenci maja nieograniczonych wspolpracownikow.

30/50
Uruchamianie nowego projektu na GitHubie
  • Proces tworzenia repozytorium w chmurze jest intuicyjny i szybki.
  • Nadaj projektowi krótką, opisową nazwę i opcjonalny opis.
  • Zdecyduj o poziomie prywatności Twojego nowego repozytorium.
  • Możesz od razu dodać plik README oraz licencję dla projektu.
  • GitHub przygotuje dla Ciebie unikatowy adres URL Twojego kodu.
  • To pierwszy krok do rozpoczęcia przygody z globalną dystrybucją kodu.
Slide 30

Nowe repozytorium to publikacja projektu. Krotka, opisowa nazwa z myslnikami. Opis i licencja maja znaczenie prawne.

README od razu daje strone glowna. Szablony README i .gitignore. GitHub pokazuje instrukcje polaczenia z lokalnym projektem.

31/50
Plik README: Twoja strona główna projektu
  • README.md (Markdown) to pierwszy plik, który widzi odwiedzający.
  • Opisuje cel projektu, sposób instalacji i przykłady użycia.
  • Dobre README znacząco zwiększa szanse na zainteresowanie Twoim kodem.
  • Możesz w nim używać formatowania tekstu, list, a nawet obrazków.
  • Dbałość o dokumentację świadczy o Twoim profesjonalnym podejściu.
  • To kluczowy element komunikacji między autorem a użytkownikiem.
Slide 31

README to najbardziej widoczny element. Odpowiada na: co, jak uzyc, jak zainstalowac. Jakosc decyduje o pozostaniu odwiedzajacych.

README ewoluuje z projektem. Wymagania, instrukcje, przyklady, architektura. Dobrze utrzymane swiadczy o jakosci.

32/50
git clone: Pobieranie projektu z chmury
                # Skopiowanie zdalnego repozytorium na dysk
$ git clone https://github.com/użytkownik/projekt.git
  • Klonowanie tworzy pełną kopię repozytorium na Twoim lokalnym dysku.
  • Pobierasz całą historię zmian, wszystkie pliki i gałęzie (branches).
  • To podstawowy sposób na rozpoczęcie pracy nad istniejącym projektem.
  • Automatycznie ustawia połączenie między Twoim komputerem a serwerem.
Slide 32

git clone tworzy lokalna kopie z historia. Pobiera galezie, tagi i obiekty. Automatycznie konfiguruje origin.

--depth 1 dla plytkiego klonowania. --branch dla konkretnej galezi. --recurse-submodules dla podmodulow.

33/50
Pojęcie Remotes i nazwa 'origin'
  • 'Remote' to zdalna wersja Twojego repozytorium zapisana na serwerze.
  • 'origin' to domyślna nazwa głównego zdalnego serwera w Git.
  • Dzięki temu Git wie, dokąd wysyłać i skąd pobierać nowe zmiany.
  • Możesz mieć wiele zdalnych repozytoriów dla jednego projektu lokalnego.
  • Zapewnia to elastyczność w przepływie danych między różnymi serwerami.
Slide 33

Remotes odrozniaja Gita od lokalnych VCS. Remote to wskaznik z adresem URL. Domyslnie origin to zwykla konwencja.

Wiele remoteow w modelu forkow: fork, clone, upstream. Pull z oryginalu, push do forka, PR do oryginalu.

34/50
git push: Wysyłanie kodu do chmury
                # Wysłanie zmian z lokalnej gałęzi do chmury
$ git push origin main
  • Przesyła Twoje lokalne zatwierdzenia (commits) na serwer GitHub.
  • Dzięki temu inni członkowie zespołu mogą zobaczyć postępy Twoich prac.
  • Jest to bezpieczny sposób na publikację sprawdzonej funkcjonalności.
  • Wymaga uprawnień do zapisu w repozytorium zdalnym.
  • Podsumowuje lokalny etap prac i udostępnia go globalnie.
Slide 34

git push wysyla zatwierdzone zmiany na serwer. Wymaga aktualnej galezi wzgledem zdalnej. Konflikty wymagaja rozwiazania.

--force-with-lease bezpieczniejszy niz --force. --tags wysyla tagi. Push wysyla tylko zatwierdzone zmiany.

35/50
git pull: Synchronizacja w zespole
                # Pobranie najnowszych zmian i połączenie ich z lokalnym kodem
$ git pull origin main
  • Pobiera najnowsze zmiany wysłane przez Twoich kolegów z zespołu.
  • Automatycznie łączy (merge) zdalne zmiany z Twoim kodem lokalnym.
  • Zaleca się wykonywanie tej komendy przed rozpoczęciem nowej pracy.
  • Dba o to, aby Twoja lokalna kopia projektu była zawsze aktualna.
Slide 35

git pull = git fetch + git merge. Pobiera i integruje zmiany. Fast-forward merge przy braku konfliktow.

Regularny pull kluczowy dla synchronizacji. --rebase naklada lokalne zmiany na pobrane. Liniowa historia, wymaga ostroznosci.

36/50
Pełny cykl pracy z GitHubem
  • 1. Pull: Zacznij od pobrania zmian od zespołu.
  • 2. Edit: Wprowadź zmiany w kodzie programu.
  • 3. Add: Przygotuj pliki do zatwierdzenia.
  • 4. Commit: Zrób lokalną migawkę swojej pracy.
  • 5. Push: Wyślij wynik swojej pracy na serwer.
  • To powtarzalny proces, który gwarantuje spójność projektu grupowego.
Slide 36

Pull-Edit-Add-Commit-Push to rytm pracy. Pull gwarantuje aktualna wersje. Add pozwala precyzyjnie wybrac zawartosc.

Commit tworzy migawke, push udostepnia. Cykl powtarzany wiele razy dziennie. Przed pushem przejrzyj git diff.

37/50
Łączenie istniejącego projektu z GitHub
                # Dodanie adresu serwera do lokalnego Gita
$ git remote add origin URL_REPO
# Ustawienie głównej gałęzi i wysłanie
$ git push -u origin main
  • Umożliwia dodanie chmurowej kopii do projektu zaczętego na dysku.
  • Tworzy trwałe połączenie między Twoim folderem a serwerem GitHub.
  • Flaga `-u` zapisuje ustawienia, co ułatwia kolejne operacje `push`.
Slide 37

Laczenie lokalnego projektu z GitHubem: git remote add origin. Pierwszy push z -u. Jesli zdalne ma pliki - git pull --rebase.

Przed dodaniem remote sprawdz zgodnosc. Przy kolizji pull --rebase. Kopia zapasowa przed rozwiazywaniem konfliktow.

38/50
Bezpieczeństwo: Tokeny zamiast haseł
  • GitHub wymaga użycia Personal Access Tokens (PAT) do logowania z konsoli.
  • Są one bezpieczniejsze niż zwykłe hasła do konta i mają określoną ważność.
  • Pozwalają na precyzyjne określenie uprawnień (np. tylko odczyt lub tylko zapis).
  • Możesz je łatwo unieważnić w przypadku podejrzenia wycieku danych.
  • To nowoczesny standard zabezpieczania dostępu do zasobów IT.
  • Nigdy nie udostępniaj swojego tokena osobom trzecim!
Slide 38

Personal Access Tokens to standard autoryzacji. Token z ograniczonymi uprawnieniami i okresem waznosci. Mozna uniewaznic bez zmiany hasla.

PAT w Settings - Developer settings. Wybierz zakres. Przechowuj bezpiecznie w menedzerze hasel.

39/50
Fork i Pull Request: Praca w Open Source
  • Fork: Tworzy Twoją własną kopię cudzego projektu na GitHubie.
  • Pull Request (PR): Prośba o dołączenie Twoich zmian do oryginału.
  • Umożliwia bezpieczny wkład w rozwój oprogramowania z całego świata.
  • Właściciel projektu może przejrzeć Twój kod przed jego akceptacją.
  • To podstawa współpracy w największych projektach (Linux, Python, VS Code).
Slide 39

Fork tworzy kopie repozytorium na koncie. Zmiany w forku, PR do oryginalu. Chroni oryginal przed nieautoryzowanymi zmianami.

PR umozliwia dyskusje i recenzje. Automatyczne testy CI/CD. Code review wychwytuje bledy i dzieli wiedze.

40/50
Zarządzanie zadaniami: GitHub Issues
  • Zgłoszenia (Issues) to wbudowany system śledzenia błędów i planowania funkcji.
  • Pozwalają dyskutować o problemach bezpośrednio przy kodzie źródłowym.
  • Możesz używać etykiet (bug, feature), aby kategoryzować zgłoszenia.
  • Umożliwiają przypisywanie zadań do konkretnych programistów.
  • Przejrzysta lista zadań pomaga utrzymać tempo prac w zespole.
  • To centralne miejsce komunikacji o technicznych aspektach projektu.
Slide 40

Issues to system sledzenia zadan i bledow. Zglasza kazdy uzytkownik. Tytul, opis, kroki do odtworzenia.

Projects z tablica Kanban. Issues lczone z PR. Etykiety i kamienie milowe organizuja prace.

41/50
Automatyzacja z GitHub Actions
  • GitHub Actions pozwala na automatyczne uruchamianie skryptów w chmurze.
  • Najczęstsze zastosowanie to automatyczne testowanie kodu po każdym `push`.
  • Chroni projekt przed błędami, wykrywając je niemal natychmiast.
  • Oszczędza czas programistów, wykonując powtarzalne czynności za nich.
  • Jest to podstawa profesjonalnego podejścia CI (Continuous Integration).
  • Zapewnia wysoką jakość oprogramowania dostarczanego użytkownikom.
Slide 41

Actions umozliwia zadania w odpowiedzi na zdarzenia: testowanie, Docker, synchronizacje. Pipeliney obejmujace wiele repozytoriow.

Marketplace z gotowymi akcjami: deploy na AWS, Azure, GCP. Gotowe akcje przyspieszaja konfiguracje.

42/50
Zarządzanie wydaniami: Releases
  • Releases pozwalają oznaczyć stabilne wersje Twojego oprogramowania.
  • Możesz dołączyć do nich gotowe pliki instalacyjne (pliki binarne).
  • Zawierają profesjonalne notatki o zmianach (Changelog) dla użytkowników.
  • Służą jako oficjalne punkty w historii rozwoju Twojej aplikacji.
  • Ułatwiają użytkownikom pobieranie sprawdzonej wersji kodu.
  • To zwieńczenie etapu rozwoju i moment dostarczenia produktu.
Slide 42

Releases oznaczaja oficjalne wersje z tagiem, tytulem, changelogiem i zalacznikami. Kluczowe dla uzytkownikow.

Automatyzacja przez semantic-release. Analizuje commity, okresla wersje, generuje changelog. Dla studentow - etapy projektu.

43/50
Bezpieczeństwo i Dependabot
  • GitHub skanuje Twój kod w poszukiwaniu przypadkowo wysłanych haseł.
  • Dependabot automatycznie wykrywa luki w zabezpieczeniach używanych bibliotek.
  • Może sam zaproponować poprawki i stworzyć Pull Request z aktualizacją.
  • Dba o to, aby Twój projekt był zawsze bezpieczny i aktualny.
  • To tarcza chroniąca Twoje oprogramowanie przed cyberzagrożeniami.
Slide 43

Dependabot monitoruje zaleznosci i luki. Skanuje pliki manifestu. Tworzy PR z aktualizacja. Szybka reakcja na zagrozenia.

Automatyczne aktualizacje wersji. Konfiguracja w .github/dependabot.yml. Monitorowane ekosystemy i czestotliwosc.

44/50
Profesjonalny przepływ pracy – Rekapitulacja
  • Łączymy bezpieczeństwo z automatyzacją i współpracą zespołową.
  • Każda zmiana jest testowana przez roboty i sprawdzana przez ludzi.
  • Dążymy do tego, aby główna gałąź kodu (main) była zawsze w stanie stabilnym.
  • Używamy nowoczesnych standardów komunikacji i zabezpieczeń.
  • To model pracy stosowany w największych firmach technologicznych świata.
  • Twoja biegłość w tych procesach definiuje Twój poziom zawodowy.
Slide 44

Profesjonalny workflow: planowanie, implementacja, recenzja, testowanie, wdrozenie - wszystko zintegrowane w GitHub.

Branch protection: testy przed scaleniem, code review. Status checks dla przetestowanego kodu. Konfiguracja w Settings - Branches.

45/50
Twoja ścieżka rozwoju z Git i GitHub
  • Przeszliśmy od podstawowych komend do zaawansowanych systemów chmurowych.
  • Każdy slajd był krokiem do stania się lepszym inżynierem.
  • Zdobyte umiejętności są fundamentem pracy w każdym nowoczesnym zespole IT.
  • Pamiętaj, że nauka Gita to proces ciągłego doskonalenia nawyków.
  • Masz teraz solidną podstawę, by budować własne, wielkie projekty.
  • Świat nowoczesnego programowania stoi przed Tobą otworem.
Slide 45

Sciezka rozwoju: lokalny Git, zdalne, zaawansowane funkcje. Swiadomy inzynier rozumie kontekst narzedzi.

Dalszy rozwoj: submodules, bisect, hooks. DevOps: Docker, Kubernetes. Fundament Gita na cala kariere.

46/50
GitHub to Twoje portfolio
  • Pielęgnuj swoje repozytoria – one mówią o Tobie więcej niż dyplom.
  • Regularna aktywność na GitHubie pokazuje Twoją pasję i konsekwencję.
  • Uczestnicz w projektach innych, by budować sieć profesjonalnych kontaktów.
  • Dokumentuj swoje postępy, nawet jeśli projekt wydaje się prosty.
  • Dbałość o jakość kodu i dokumentację to Twoja karta przetargowa na rynku.
  • Twoje konto to Twój unikatowy ślad w globalnej społeczności twórców.
Slide 46

GitHub jako portfolio zyskuje na znaczeniu. Pracodawcy prosza o profil. Regularne commity buduja autentyczny obraz.

Jakosc ponad ilosc, regularnosc, dokumentacja, roznorodnosc. GitHub to wizytowka w swiatowym IT.

47/50
Kompletny zestaw narzędzi dewelopera
  • Otrzymałeś zestaw narzędzi do pracy lokalnej, zespołowej i chmurowej.
  • Wiesz jak dbać o czystość kodu, historię zmian i bezpieczeństwo danych.
  • Potrafisz automatyzować zadania i współpracować z każdym na świecie.
  • Te umiejętności są uniwersalne i niezależne od języka programowania.
  • Możesz teraz z pewnością dołączyć do dowolnego projektu technicznego.
  • Profesjonalizm w IT zaczyna się od świadomego zarządzania kodem.
Slide 47

Narzedzia: lokalne, zespolowe, chmurowe. Ekosystem wazny jak jezyk programowania. Issues, PR, CI, Releases - zintegrowane.

Integracja eliminuje reczna prace. Nauka to kompetencje na pierwszy dzien w pracy.

48/50
Podsumowanie fundamentów kursu
  • Integralność: Wiesz, że Twój kod jest bezpieczny i każda zmiana zapisana.
  • Współpraca: Potrafisz pracować w zespole bez powodowania konfliktów.
  • Automatyzacja: Roboty pracują dla Ciebie, sprawdzając błędy w tle.
  • Standardy: Stosujesz profesjonalne metody uznawane w całej branży IT.
  • To koniec pewnego etapu, ale początek Twojej drogi jako twórcy systemów.
Slide 48

Kurs objal od podstaw po zaawansowane funkcje. Kazdy temat daje pelny obraz zarzadzania kodem.

Git i GitHub to narzedzia komunikacji. Dzielenie kodem, recenzowanie, dyskusje. Zachecamy do wlasnych projektow.

49/50
Gotowość do kariery i dalszy rozwój
  • Jesteś gotowy, by z dumą pokazać swoje projekty rekruterom i światu.
  • Fundamenty, które poznałeś, pozwolą Ci na szybką naukę nowych narzędzi.
  • Bądź ciekawy nowych funkcji GitHub i nieustannie poprawiaj swój warsztat.
  • Każdy commit to krok w stronę bycia mistrzem inżynierii oprogramowania.
  • Dziękujemy za wspólnie spędzony czas i życzymy powodzenia w budowaniu przyszłości!
Slide 49

Solidne podstawy do pracy profesjonalnej: zarzadzanie wersjami, wspolpraca, bezpieczenstwo. Umiejetnosci poszukiwane na rynku.

Dalszy rozwoj: blogi, meetupy, Open Source. Uczenie sie odroznia wybitnych inzynierow. Powodzenia!

50/50
Podsumowanie i zakończenie kursu
  • Gratulacje! Przeszedłeś pełną drogę od podstaw do profesjonalnego workflow.
  • Wiesz jak dbać o kod, współpracować w zespole i automatyzować zadania.
  • Git to Twój dziennik pokładowy, a GitHub to port dla twoich projektów.
  • Pamiętaj o regularnej nauce i dbałości o jakość każdego przesłanego wiersza.
  • Życzymy sukcesów w tworzeniu aplikacji, które zmienią otaczający nas świat!
  • Czy mają Państwo jakieś pytania końcowe dotyczące całego cyklu?
Slide 50

Koniec cyklu - od podstaw po zaawansowane funkcje. Wiedza przydatna na studiach i w pracy zawodowej.

Dobre nawyki: regularne commity, opisowe komunikaty, pull przed push. Powodzenia w spolecznosci programistow!