GitHub — to największa platforma internetowa do hostowania repozytoriów Git, wspólnego tworzenia oprogramowania i automatyzacji procesów, należąca do Microsoft. Zapewnia nie tylko przechowywanie kodu z kontrolą wersji, ale także pełen zestaw narzędzi do zarządzania projektami: Issue Tracking, Pull Request z code review, Actions dla CI/CD oraz Wiki do dokumentacji. Według danych GitHub, 2024, platforma liczy ponad 100 milionów programistów i 420 milionów repozytoriów.
Najważniejsze
GitHub — to usługa internetowa do przechowywania i wspólnej pracy nad repozytoriami Git, założona w 2008 roku przez Toma Prestona-Wernera, Chrisa Wanstratha i P.J. Hyetta. W 2018 roku firma została przejęta przez Microsoft za 7,5 miliarda dolarów. Platforma zapewnia interfejs webowy dla wszystkich operacji Git, dodając na wierzchu funkcje społecznościowe: forki, gwiazdki, subskrypcje, code review oraz wbudowany system ciągłej integracji.
Kluczowa różnica GitHub od konkurencji — otwarty ekosystem i największa społeczność programistów. Na GitHub znajdują się kody źródłowe Androida, Kubernetes, Reacta, Swifta, Kotlina i tysięcy innych projektów open-source. To sprawia, że platforma jest nie tylko narzędziem do przechowywania kodu, ale także siecią społecznościową dla programistów: można śledzić projekty, dyskutować o zmianach i wnosić swój wkład przez pull request.
Według raportu Microsoft (2024), przez GitHub codziennie przechodzi ponad 10 milionów nowych Pull Request, a liczba miesięcznych aktywnych użytkowników przekroczyła 100 milionów. Platforma obsługuje ponad 500 języków programowania, automatyczne wykrywanie języka na podstawie rozszerzenia plików i podświetlanie składni kodu.
Funkcjonalność GitHub wykracza daleko poza zwykłe hostowanie Git. Platforma oferuje: GitHub Actions — wbudowany system CI/CD; GitHub Packages — rejestr pakietów i kontenerów; GitHub Codespaces — chmurowe środowiska programistyczne oparte na VS Code; GitHub Discussions — forum społecznościowe; GitHub Security — Dependabot do automatycznej aktualizacji zależności i skanowania podatności; GitHub Copilot — asystenta AI do pisania kodu.
Dla organizacji GitHub oferuje GitHub Enterprise — wersję korporacyjną z własnym hostingiem (GitHub Enterprise Server) lub wdrożeniem chmurowym (GitHub Enterprise Cloud). Funkcje korporacyjne obejmują uwierzytelnianie SAML/SSO, audyt działań, polityki bezpieczeństwa repozytoriów i SLA na poziomie 99,95% dostępności. Wersja Enterprise jest używana przez takie firmy jak Google, Apple i Airbnb.
Ważna cecha GitHub — GitHub CLI (gh), który umożliwia wykonywanie wszystkich operacji na platformie z wiersza poleceń bez używania interfejsu webowego. Za pomocą gh można tworzyć repozytoria, zarządzać Issues, przeglądać Pull Request i uruchamiać Actions bezpośrednio z terminala, co przyspiesza pracę programistów przyzwyczajonych do wiersza poleceń.
| Funkcja | Przeznaczenie | Dostępność |
|---|---|---|
| Actions | CI/CD i automatyzacja | Bezpłatnie 2000 min/mies |
| Codespaces | Chmurowa IDE oparta na VS Code | Płatne, 60 h/mies gratis |
| Packages | Hosting pakietów i obrazów Docker | Bezpłatnie 500 MB |
| Dependabot | Automatyczna aktualizacja zależności | Bezpłatnie dla publicznych repozytoriów |
| Pages | Hosting statycznych stron | Bezpłatnie |
Pull Request (PR) — to podstawowy mechanizm wprowadzania zmian w projekcie na GitHub. Programista tworzy gałąź ze zmianami, publikuje ją na GitHub i wysyła żądanie scalenia (Pull Request) do głównej gałęzi. Inni uczestnicy projektu widzą różnicę (diff) między gałęziami, mogą zostawiać komentarze do konkretnych linii kodu, proponować zmiany oraz zatwierdzać lub odrzucać żądanie.
Proces code review na GitHub jest zbudowany wokół PR. Każdy komentarz jest przypisany do konkretnej linii diffa i może być trzech typów: Comment (zwykły komentarz), Request Changes (wymaga poprawek) i Approve (zatwierdzenie). Po wprowadzeniu zmian autor aktualizuje PR nowym commitem i proces powtarza się. Gdy wszystkie uwagi zostaną usunięte i PR zostanie zatwierdzony, zmiany są scalane z docelową gałęzią.
# Tworzenie gałęzi feature i pusha
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug
# Tworzenie PR przez CLI
gh pr create --base main --title "Fix login validation" \
--body "Fixed edge case with empty email field"
# Przeglądanie i merge PR
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug
GitHub obsługuje ochronę gałęzi (branch protection rules): można zabronić bezpośredniego pusha do main, wymagać obowiązkowej liczby zatwierdzeń przed merge, uruchamiać kontrole Actions i wymagać aktualności gałęzi przed scaleniem. Ochrona gałęzi jest konfigurowana w Settings → Branches i jest obowiązkową praktyką dla projektów produkcyjnych, zapobiegającą przypadkowemu wprowadzeniu niestabilnego kodu do głównej gałęzi.
GitHub Actions — to wbudowana platforma CI/CD, która umożliwia automatyzację przepływów pracy bezpośrednio w repozytorium. Workflow jest opisywany w plikach YAML, znajdujących się w katalogu .github/workflows/. Każdy workflow składa się z jednego lub więcej jobów, które są wykonywane na runnerach — maszynach wirtualnych z Linux, Windows lub macOS.
Actions obsługuje model sterowany zdarzeniami: workflow uruchamia się przy pushu, utworzeniu PR, publikacji release, zgodnie z harmonogramem lub przez webhook. Pozwala to zautomatyzować budowanie, uruchamianie testów, statyczną analizę kodu, publikację w sklepach z aplikacjami i wdrożenie na serwer bez udziału programisty. Poniżej znajduje się przykład workflow dla projektu Android:
name: Android CI
on:
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
- name: Build with Gradle
run: ./gradlew assembleDebug
Ekosystem Actions obejmuje ponad 20 000 gotowych akcji w GitHub Marketplace. Popularne akcje: checkout (klonowanie repozytorium), setup-java/setup-node/setup-python (konfiguracja środowiska), upload-artifact (zapisywanie artefaktów budowania), cache (buforowanie zależności w celu przyspieszenia), slack-notify (wysyłanie powiadomień do Slack). Actions obsługuje również budowanie macierzowe — jednoczesne uruchamianie na kilku wersjach systemów operacyjnych lub języków.
Issues — to wbudowany system śledzenia zadań na GitHub. Każdy Issue ma tytuł, opis, etykiety (labels), przypisanych wykonawców (assignees), kamienie milowe (milestones) i powiązane Pull Request. Issues mogą być szablonowane — dla zgłoszeń błędów, próśb o funkcje lub pytań używane są różne szablony, które automatycznie się podstawiają przy tworzeniu.
GitHub Projects (wcześniej Projects Beta) — to narzędzie do zarządzania projektami oparte na tablicach, podobne do Jiry i Trello. Projects obsługuje niestandardowe pola (status, priorytet, sprint), powiązania z Issues i Pull Request, automatyzację przenoszenia kart przy zmianie statusu zadania oraz analitykę w postaci wykresu spalania zadań (burndown chart). Projects jest dostępny w dwóch trybach: Table (widok tabelaryczny) i Board (tablica kanban).
Do zarządzania wydaniami GitHub oferuje Milestones — grupy Issue i PR, połączone wspólnym celem z terminem. Każdy kamień milowy pokazuje postęp wykonania: ile zadań jest otwartych, ile zamkniętych i czy termin jest przestrzegany. Milestones integrują się z Releases — przy publikacji wydania można powiązać je z kamieniem milowym i automatycznie wygenerować listę zmian w CHANGELOG na podstawie zamkniętych Issue.
GitHub Pages — to darmowy hosting dla statycznych stron, który automatycznie publikuje zawartość repozytorium pod adresem https://username.github.io/repository. Pages obsługuje HTML, CSS, JavaScript i statyczne generatory: Jekyll (wbudowany), Hugo, Next.js (eksport) i MkDocs. Konfiguracja obejmuje wybór gałęzi i katalogu do publikacji oraz obsługę niestandardowej domeny.
Do dokumentacji technicznej GitHub oferuje Wiki — wbudowany system wiki, który również jest przechowywany jako repozytorium Git. Wiki obsługuje Markdown i umożliwia edycję stron zarówno przez interfejs webowy, jak i lokalnie przez push do repozytorium wiki. Każda strona Wiki ma własną historię zmian, co jest wygodne do dokumentowania API, architektury i procesów projektu.
Połączenie GitHub Pages + Jekyll — popularne rozwiązanie dla stron dokumentacji. Jekyll automatycznie konwertuje pliki Markdown na statyczne strony HTML, obsługuje motywy, nawigację i wyszukiwanie. Na przykład dokumentacja Android Developers wcześniej używała Jekyll na GitHub Pages, a teraz — wewnętrznej platformy, ale tysiące projektów open-source nadal używa tego połączenia dla swoich stron.
GitHub CLI (gh) umożliwia wykonywanie wszystkich operacji na platformie przez wiersz poleceń: tworzenie repozytoriów, zarządzanie Issues, przeglądanie i zatwierdzanie Pull Request, uruchamianie Actions. Polecenie gh repo create my-project --public tworzy zdalne repozytorium i łączy je z lokalnym, a gh pr create tworzy Pull Request z bieżącej gałęzi. CLI przyspiesza pracę programistów, którzy preferują terminal nad interfejsem webowym.
GitHub REST API i GraphQL API zapewniają programowy dostęp do wszystkich funkcji platformy: tworzenie Issue, zarządzanie użytkownikami, pobieranie statystyk i zarządzanie Actions. GraphQL API jest preferowane do złożonych zapytań, ponieważ pozwala uzyskać tylko potrzebne pola w jednym zapytaniu. Limit rate dla REST API — 5000 zapytań na godzinę dla uwierzytelnionych użytkowników. API jest szeroko używane do integracji GitHub z zewnętrznymi systemami CI i wewnętrznymi narzędziami DevOps.
GitHub Gist — usługa do publikowania fragmentów kodu bez tworzenia pełnego repozytorium. Gist obsługuje podświetlanie składni, osadzanie na zewnętrznych stronach i historię wersji. Każdy Gist może być publiczny (widoczny w wyszukiwarce) lub sekretny (dostępny tylko pod linkiem). Gist jest używany do szybkiego udostępniania konfiguracji, logów i przykładów kodu w korespondencji zespołowej, a także jako odpowiednik Pastebina dla programistów.
Często zadawane pytania
GitHub kładzie nacisk na otwartą społeczność i funkcje społecznościowe (forki, gwiazdki). GitLab oferuje bardziej zaawansowany wbudowany CI/CD i własny hosting (Self-Managed) bez ograniczeń minut Actions.
GitHub Team kosztuje 4 dolary na użytkownika miesięcznie i zapewnia nieograniczone prywatne repozytoria, ochronę gałęzi i Actions (3000 minut). Darmowy taryf jest odpowiedni dla małych projektów open-source.
Przy tworzeniu repozytorium wybierz Private zamiast Public. W prywatnych repozytoriach kod widzą tylko zaproszeni uczestnicy. Na darmowym taryfie prywatne repozytoria są dostępne z ograniczeniem do 3 kolaboratorów.
GitHub Copilot — asystent AI oparty na OpenAI Codex, który oferuje autouzupełnianie kodu w czasie rzeczywistym. Działa w VS Code, JetBrains i Neovim, obsługuje wszystkie popularne języki programowania.
Przejdź do Settings → Danger Zone → Delete this repository. Usunięcie jest nieodwracalne — wszystkie commity, Issue i Wiki zostaną usunięte bez możliwości odzyskania. Przedtem upewnij się, że masz kopię zapasową.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również