Dla programistów embedded, którzy chcą pracować z gitem tak, jak pracują zespoły programistyczne — i przestać kopiować katalogi.
„Wczoraj działało, dziś nie działa.” Na dysku katalogi projekt, projekt_kopia, projekt_final_v3. A klient pyta o urządzenie sprzed pół roku i nikt nie wie, który z tych katalogów ma wgrany.
Ten kurs uczy pracy z gitem tak, jak pracują zespoły programistyczne: z czytelną historią, powrotem do każdego release’u i zmianami, które przechodzą code review, zanim trafią do kodu produkcyjnego. 14 lekcji wideo, 4 godziny 10 minut, dostęp dożywotni. Płytka nie jest potrzebna — wystarczy dowolny Twój projekt.
14 lekcji
wideo, krok po kroku
4 h 10 min
konkretnie, bez dygresji
dostęp dożywotni
od razu po zakupie
Kilka minut o tym, jak wygląda porządna praca z gitem w projekcie embedded — i co dokładnie jest w kursie.
Większość z nas łapie gita z doskoku. Kilka komend na pamięć, reszta „jakoś to będzie”. I przez długi czas to działa. Aż do dnia, w którym:
❌ wczoraj działało, dziś nie działa — i nie masz pojęcia, co zmieniłeś,
❌ na dysku masz projekt, projekt_kopia, projekt_final i projekt_final_v3_NIE_RUSZAC,
❌ klient dzwoni w sprawie urządzenia sprzed pół roku, a Ty nie wiesz, która wersja jest u niego wgrana,
❌ asystent AI poprawił kilkanaście miejsc w trzech plikach i nie wiesz, które z nich chcesz zostawić,
❌ git wypisuje coś na czerwono, więc kopiujesz katalog i zaczynasz od nowa,
❌ zaczynasz pierwszą pracę, a zespół zakłada, że gita już znasz — nikt Cię go na wejściu nie będzie uczył.
👉 Problem nie siedzi w komendach. Komendę znajdziesz w pięć sekund.
👉 Siedzi w sposobie pracy — i tego żaden tutorial z pojedynczą komendą Cię nie nauczy.
Git jest ten sam. Projekt — nie do końca. Uczciwie: większość pracy z gitem wygląda tak samo w każdej branży. Ale projekt embedded ma kilka rzeczy, o które inni się nie potykają:
🔹 Ponad dwieście plików w świeżym projekcie z CubeMX. Część to Twój kod, część wygenerował CubeMX, część to biblioteki producenta, a część to śmieci po kompilacji, które zmieniają się przy każdym buildzie. Co z tego ma trafić do repozytorium?
🔹 Generator kodu. Przegenerujesz projekt, a CubeMX nadpisze Ci pliki. Bez gita nie wrócisz do tego, co było.
🔹 Firmware żyje na urządzeniach. W webie wdrażasz nową wersję i po sprawie. U nas stara wersja siedzi u klienta w szafie latami — i musisz umieć do niej wrócić, dokładnie do niej.
🔹 Kod pod NDA. Nie każde repozytorium może trafić na cudzy serwer.
Część z tych rzeczy da się wywnioskować samemu. W kursie widzisz je jednak na prawdziwym projekcie wygenerowanym w CubeMX — z przykładami, dzięki którym od razu widać, czego do repozytorium nie wrzucamy i dlaczego.
Jedna rzecz, żeby było jasne od początku: gita ćwiczymy na projekcie STM32, bo na prawdziwym projekcie widać, jak git się zachowuje. Ale to kurs gita, nie programowania STM32 — zmiany w kodzie są drobne i czasem niezbyt sensowne, bo mają dać gitowi materiał do pracy.

„Co ja zmieniłem od piątku?”
widzisz dokładnie te linie, które się zmieniły, z opisem, który po pół roku dalej coś mówi.
Klient z wersją sprzed pół roku
każdy release ma swój tag, a Ty w kilka sekund masz na dysku dokładnie ten kod, który jest u niego.
„Wczoraj działało”
cofasz się do wersji, która działała, sprawdzasz i wracasz. Zakomentowane stare funkcje w main.c możesz wreszcie skasować.
Release’y są nietykalne
rdzeń firmware’u, czyli kolejne release’y, zostaje nietknięty, a każdy nowy feature piszesz obok. Jutro prezentacja, a Ty w połowie przepisywania sterownika? Wgrywasz ostatni release i śpisz spokojnie. Nieprzetestowane nie trafia do kodu produkcyjnego.
Koniec z kodem wysyłanym mailem i ZIP-em
w zespole tak się nie pracuje, bo po tygodniu nikt nie wie, kto co komu wysłał i kto ma które pliki. Jedynym źródłem prawdy jest repozytorium, do którego wszyscy się synchronizują i z którego wszyscy korzystają.
Wiesz, co zmienił kolega
bez pytania, proszenia i przypominania. Wszystko jest na serwerze, a Ty widzisz to przy najbliższej synchronizacji.
Wszyscy grają według tych samych zasad
wiesz, jak wysyłać swoje zmiany i jak pobierać cudze, a reszta zespołu robi dokładnie to samo.
Zmiany od AI pod kontrolą
każdą widzisz czarno na białym i cofasz te, których nie chcesz.
Pięć roboczych commitów → jeden porządny
tak się pracuje naprawdę, tylko nikt tego nie pokazuje. Oryginał zostaje nietknięty obok.
Pull request i code review
kolega zostawia komentarz przy konkretnej linii, poprawiasz, zatwierdza.
Pierwszy tydzień w nowej pracy
„zrób brancha, wystaw PR-a, ktoś Ci zrobi review”. I wiesz, o co chodzi.
Trzy etapy — od pustego katalogu do release’u.

Instalacja i repozytorium na projekcie z CubeIDE. Przede wszystkim jednak jak się zachowywać przy wprowadzaniu zmian: jak je dokumentować, jak pisać opis commita, który coś mówi po pół roku, jak wprowadzać zmiany małymi krokami i jak nie wpuścić do repozytorium tego, co nie ma do niego trafić. Do tego cała lekcja o tym, jak wyjść z typowych wpadek — od cofnięcia niezapisanej zmiany po powrót do wersji firmware’u, która działała.
Model zbliżony do Git Flow, z pewnymi uproszczeniami. Branche i konflikty — skąd się biorą i jak z nich wyjść, gdy git je zgłosi. Rebase i squash, czyli jak przygotować porządną zmianę do code review: pięć roboczych commitów zamienionych w jeden, a debugowe printfy w stylu „dupa1″, „dupa2″ zostają za drzwiami — nie wchodzą do kodu. I zasady, dzięki którym w zespole branch z release’ami zawsze działa.
Zdalne repozytorium to podstawa pracy zespołowej — i tego, jak się wobec niego zachowywać. Wstęp do GitHuba od podstaw: zakładanie repozytorium, praca z nim, wysyłanie i pobieranie zmian. Zobaczysz też, jak zdalne repozytorium wygląda u Ciebie lokalnie, w gicie. Do tego co wolno wysłać na serwer, a czego nigdy, pull request od początku do końca i release z plikiem firmware’u do pobrania.
👉 To jest cała droga jednej zmiany: od pomysłu do release’u. Dokładnie to, co będziesz robić w zespole.
Git ma setki komend i opcji, a większości z nich przez lata pracy nie użyjesz. Ten kurs to podstawa pracy z gitem w życiu zawodowym — wybrana na podstawie tego, czego sam używam na co dzień w projektach embedded.
To kompletna ścieżka od początku do końca — cała pętla pracy z gitem, którą potem możesz dowolnie dopasować do siebie. A jeśli trafisz do zespołu, który korzysta z gita trochę inaczej, i tak będziesz wiedział, jak się zachować: rdzeń pracy z gitem jest wszędzie ten sam, a różnice załapiesz od razu.
Tematy zaawansowane, takie jak szukanie błędu w historii, podmoduły, kilka katalogów roboczych jednego repozytorium czy automatyczne budowanie na serwerze, pojawiają się na koniec jako mapa dalszej drogi, a nie jako materiał kursu. Gdy będą Ci potrzebne, doczytasz je bez trudu, bo będziesz już rozumieć, jak git działa pod spodem.
Rozwiń etap, żeby zobaczyć, co jest w każdej lekcji.
1. Start — instalacja i konfiguracja gita: cztery ustawienia, które robisz raz na całe życie. Jak git w ogóle działa — trzy obszary, w których żyją Twoje zmiany, i wskaźnik, który mówi, gdzie w historii stoisz. Na koniec różnica między gitem a GitHubem, którą myli większość początkujących.
2. Nowe repozytorium i .gitignore — zakładasz repozytorium na świeżym projekcie z CubeIDE i patrzysz, co git widzi. Dzielisz pliki na trzy grupy: co trafia do repozytorium, co nie, i czego nie wolno tam wrzucić nigdy. Piszesz własny .gitignore, dowiadujesz się, dlaczego biblioteki producenta zostają, i poznajesz procedurę ratunkową na wypadek, gdy śmieci już się dostały.
3. Pierwszy commit — po co git ma osobny krok przed commitem i jak sprawdzić, co dokładnie do niego wejdzie, zanim go zrobisz. Pierwszy commit, wycofanie się z przygotowanej zmiany i historia projektu w narzędziu graficznym — obraz, który będzie Ci towarzyszył do końca kursu.
4. Rytm pracy — pętla, którą będziesz robić codziennie: zmiana, sprawdzenie, commit. Trzy kolejne zmiany w firmware’ze, szukanie w historii, zaglądanie do jednego konkretnego commita — i odpowiedź na pytanie, jak często commitować.
5. Porządne commity — jeden plik, dwie niezwiązane zmiany: jak rozdzielić je na dwa osobne commity. Commit, który robi jedną rzecz, jak pisać jego opis — i antyprzykłady, które zobaczysz w niejednym repozytorium.
6. Kiedy coś pójdzie nie tak — cztery sytuacje, cztery narzędzia: cofnięcie zmian, których jeszcze nie scommitowałeś; cofnięcie commita, który jest już w historii, tak żeby został po tym ślad; skasowanie commitów, których nikt jeszcze nie widział; powrót do dowolnej wersji z przeszłości. Do tego półka na przerwaną pracę i oznaczanie wersji firmware’u.
7. Branche i merge — po co w ogóle branch i jak pracować obok release’ów. Dwa różne wyniki merge’a — i dlaczego raz powstaje dodatkowy commit, a raz nie. Sprzątanie po merge’u: branch znika, praca zostaje.
8. Konflikty — skąd się biorą i jak wygląda konflikt w pliku. Jak się z niego wycofać, jak go rozwiązać, cztery kroki wyjścia z każdego konfliktu i pułapki, w które wpada się najczęściej. Na koniec rada: jak się zachować, gdy konflikt wypadnie w kodzie wygenerowanym przez CubeMX.
9. Rebase — Twój branch został w tyle: jak przenieść swoją pracę na aktualny stan projektu. Konflikt w trakcie, droga odwrotu i odpowiedź na pytanie, które zadaje każdy: merge czy rebase?
10. Squash i przygotowanie zmiany do code review — pięć roboczych commitów zamieniasz w jeden porządny, na kopii, więc oryginał zostaje nietknięty. Wybierasz, co z roboczych zmian trafia do finalnej wersji, dopisujesz opis, który wyjaśnia „dlaczego”, i przenosisz pojedynczą zmianę między branchami.
11. Praca w zespole — zespół to wspólne repozytorium. Pięć zasad, na które się umawia: branch z release’ami zawsze da się wgrać, nazwa brancha mówi, co się dzieje, branche żyją krótko, każda zmiana przechodzi code review, a release’y mają swoje tagi. Na koniec cała droga jednej zmiany w jednym obrazku.
12. GitHub — czym jest zdalne repozytorium i jak wygląda u Ciebie lokalnie. Zakładasz repozytorium, ustalasz, co trafia na serwer, a co nigdy, i gdzie w ogóle może mieszkać repozytorium z kodem firmy. Logowanie bez ręcznego generowania tokenów, pierwsze wysłanie projektu i pobranie go na nowy komputer.
13. Zdalne repozytorium na co dzień — pobieranie cudzych zmian i dwa sposoby, żeby to zrobić. Co zrobić, gdy serwer odrzuci Twoją zmianę, bo ktoś był szybszy. Pull request od początku do końca — z komentarzem przy konkretnej linii — i release z plikiem firmware’u do pobrania.
14. Podsumowanie i co dalej — co masz w rękach po kursie, inne narzędzia graficzne do gita i sześć tematów na kolejny krok, gdy będą Ci potrzebne.
01
Dlaczego biblioteki producenta zostają w repozytorium, a śmieci z kompilacji nie
02
Jak odłożyć przerwaną pracę na bok, gdy trzeba pilnie coś poprawić
03
Jak wrócić do wersji firmware’u, która działała — bez kopii katalogów
04
Konflikt przy merge’u — skąd się bierze i jak z niego wyjść, także wycofując się
05
Pięć roboczych commitów zamienionych w jeden porządny — bez ryzyka dla oryginału
06
Czego nigdy nie wysyłasz na serwer — i czego nie wysyłasz na cudzy
Git w terminalu
na Windowsie, tak jak w większości zespołów. Na Linuksie i macOS zrobisz dokładnie to samo — inaczej wygląda tylko instalacja i uruchamianie gita.
Narzędzia graficzne dołączone do gita
do oglądania historii i do wybierania, które zmiany trafią do commita. Są w każdej instalacji gita, nic nie dokupujesz.
Zwykły edytor tekstu
żeby widzieć, co robi git, a nie co robi IDE za Twoimi plecami. Projekt pochodzi ze STM32CubeIDE, ale samego IDE w kursie nie uruchamiamy — wszystko zadziała z każdym środowiskiem.
GitHub
darmowe konto, przyda się od lekcji 12.
✅ wysyłasz sobie projekt mailem albo nosisz go na pendrivie,
✅ w projekcie na studiach pytacie się na Messengerze, kto ma najnowszą wersję,
✅ znasz kilka komend gita na pamięć, ale gdy coś wyskoczy na czerwono — kopiujesz katalog,
✅ niedługo zaczynasz praktyki albo pierwszą pracę i wiesz, że tam git jest czymś oczywistym,
✅ pracujesz sam i myślisz, że git to narzędzie dla zespołów — połowa kursu to praca w pojedynkę.
❌ na co dzień robisz rebase’y i pull requesty w zespole i nic Cię tu nie zaskoczy,
❌ szukasz wszystkich zaawansowanych opcji gita,
❌ chcesz nauczyć się programowania STM32 — tu STM32 jest tylko tłem.

Cześć! Nazywam się Mateusz Salamon. Od ponad 10 lat programuję mikrokontrolery, pracowałem w Intelu, gdzie pisałem BIOS na x86 w czystym C, a dziś uczę embedded — jestem autorem kursów STM32 dla Początkujących, STM32 na Rejestrach, FreeRTOS i Język C. Przez moje materiały przeszło ponad 1500 osób, a bloga msalamon.pl co miesiąc czytają tysiące programistów.
Trzonem tego kursu jest git z pracy w korporacji — w międzynarodowym zespole w Intelu. Nikt mnie go tam nie uczył na szkoleniu: wszyscy zakładali, że już umiem. To, czego się tam nauczyłem, stosuję do dziś we własnych projektach. Wdrożyłem to w mojej firmie i w wielu projektach, w których brałem udział, a które z jakiegoś powodu z gita nie korzystały.
Widzę to bardzo często: początkujący i małe firmy mają duży opór przed gitem. Zupełnie niepotrzebnie. To narzędzie mnóstwo ułatwia, upraszcza i przyspiesza — i moim zdaniem jest wręcz obowiązkowe od samego startu projektu.

Prowadzący jest Oficjalnym Partnerem ST (ST Partner Program)
Bez podglądu lekcji — ale z konkretem, co dostajesz przy każdej z nich:
🎬 14 lekcji wideo, łącznie 4 godziny 10 minut — średnio ok. 18 minut na lekcję. Nagrane na ekranie, krok po kroku, na jednym projekcie od pierwszej do ostatniej lekcji.
📄 Tekstowa wersja pod każdą lekcją — te same kroki co na wideo, z tym, co git powinien odpowiedzieć. Nie przewijasz nagrania dziesiąty raz, żeby coś sobie przypomnieć.
🗺️ Plansze tłumaczące, co się dzieje w lekcji — 19 plansz: to, czego nie widać w terminalu, narysowane. Do obejrzenia pod lekcją i do wydruku w PDF.
⚡ Skrót na końcu każdej lekcji — wszystko, co w niej padło, zebrane w jednym miejscu. Wracasz do niego, zamiast do filmu.
📎 Załączniki do pobrania, w jednym ZIP-ie — ściągawka na dwie strony A4 ułożona według zadań, plansze w PDF, gotowe .gitignore dla CubeIDE i CMake oraz 🤖 instrukcja pracy z gitem dla agenta AI: wrzucasz ją do swojego repozytorium, a asystent kodujący trzyma się tych samych zasad co Ty.

Dożywotnio. Kupujesz raz i wracasz do kursu, kiedy chcesz — przed pierwszą rozmową o pracę, przed pierwszym pull requestem w nowym zespole albo wtedy, gdy git znowu wypisze coś na czerwono.
To jeden weekend nauki albo tydzień wieczorów po godzinie. A git to jedna z niewielu rzeczy w tym zawodzie, które się nie starzeją: mikrokontrolery się zmieniają, IDE się zmieniają — git, którego nauczysz się teraz, pójdzie z Tobą do każdego zespołu i każdego projektu.
✔️ 14 lekcji wideo, 4 godziny 10 minut
✔️ dostęp dożywotni, od razu po zakupie
✔️ tekstową wersję każdej lekcji, plansze i skrót na końcu
✔️ ściągawkę na dwie strony A4, plansze w PDF, gotowe .gitignore dla CubeIDE i CMake
✔️ instrukcję pracy z gitem dla agenta AI
✔️ fakturę VAT
Jak dostajesz kurs: zaraz po opłaceniu zamówienia dostęp trafia na adres e-mail z zamówienia. Jeśli masz już konto na platformie kursowej, kurs dopisze się do niego.
Kurs jest treścią cyfrową dostępną w całości od razu po zakupie. Dlatego składając zamówienie, zgadzasz się na natychmiastowy dostęp i rezygnujesz z prawa do odstąpienia od umowy w ciągu 14 dni — kurs nie podlega zwrotowi.
Nie. Zaczynamy od instalacji gita. Przyda się podstawowa obsługa komputera i jakikolwiek projekt, na którym będziesz ćwiczyć.
Od razu po opłaceniu zamówienia — dostęp trafia na adres e-mail z zamówienia. Jeśli masz już konto na platformie kursowej, kurs dopisze się do niego.
Nie. To kurs gita, nie STM32. W kursie pracuję na projekcie z CubeMX, ale Ty możesz ćwiczyć na dowolnym swoim projekcie.
Gita w terminalu na Windowsie, jego narzędzi graficznych i zwykłego edytora tekstu. Projekt pochodzi z STM32CubeIDE, ale samego IDE w kursie nie uruchamiamy — wszystko, co robimy, zadziała z każdym środowiskiem.
Tak, dokładnie to samo. Inaczej wygląda tylko instalacja i uruchamianie gita.
Wiem, że materiałów o gicie jest mnóstwo. Ten kurs to wiedza praktyczna, której nauczyłem się w pracy zawodowej — w korporacji, w międzynarodowym zespole — przekazana tak, jak prowadzę wszystkie swoje szkolenia: konkretnie i w skondensowanej formie, bez odpływania od tematu, prosto do brzegu. Sporo osób mówi mi, że lubi właśnie to, jak tłumaczę. Zamiast pojedynczych komend na przykładach z weba dostajesz całą drogę — od pustego katalogu do release’u — na projekcie, który wygląda jak Twój.
AI zna gita wyśmienicie i w całości — i chętnie zrobi wokół niego bardzo dużo rzeczy. Wiele z nich będzie nadmiarowych i niepotrzebnych, a przede wszystkim mogą się różnić od zasad, które obowiązują w Twoim projekcie. Znając podstawy, możesz mu wskazać, co ma się dziać w Twoim repozytorium — dokładnie według Twoich zasad albo tych, które ustalił Twój zespół. W kursie dostajesz do tego gotową instrukcję pracy z gitem dla agenta AI.
Git to jedna z pierwszych rzeczy, których używasz w zespole — i jedna z ostatnich, których ktoś Cię uczy. Kurs pokazuje sposób pracy, który zastaniesz w zespole programistycznym: branche, code review, pull requesty i release’y.
14 lekcji wideo, łącznie 4 godziny 10 minut — średnio ok. 18 minut na lekcję. Pod każdą lekcją jest jej tekstowa wersja, plansze i skrót tego, co w niej padło.
Dożywotnio.
Nie. Kurs jest treścią cyfrową dostępną w całości od razu po zakupie — składając zamówienie, zgadzasz się na natychmiastowy dostęp i rezygnujesz z prawa do odstąpienia od umowy w ciągu 14 dni.
Tak. Prowadzę legalnie działającą firmę i jestem płatnikiem VAT. Fakturę dostaniesz w ciągu kilku dni od opłacenia zamówienia.
Napisz na mateusz@msalamon.pl. Odpowiadam na każdego maila.