GitHub - czym jest, do czego służy?

readTime

10 min

GitHub - czym jest, do czego służy?

Spis treści

GitHub to platforma online, która służy do hostowania i zarządzania kodem źródłowym różnorodnych projektów tworzonych przez programistów.

Jest to miejsce, gdzie mogą online przechowywać swoje projekty, współpracować z innymi oraz śledzić zmiany w kodzie.

GitHub opiera się na systemie kontroli wersji o nazwie Git, który pozwala na śledzenie historii zmian w kodzie, cofanie się do poprzednich wersji i pracę nad różnymi wersjami projektu jednocześnie.

Przykład użycia GitHuba

Wyobraź sobie, że tworzysz stronę internetową i chcesz robić to wspólnie z kolegą. Zobacz jak możesz wykorzystać do tego serwis GitHub:

  1. Założenie konta na GitHub: Najpierw zakładasz konto na GitHub.com.

  2. Utworzenie nowego repozytorium: Tworzysz nowe repozytorium (repo), które będzie przechowywać pliki twojego projektu. Repozytorium to coś w rodzaju folderu, który przechowuje wszystkie pliki projektu oraz historię zmian.

    plaintext
    Projekt-MojaStrona
    ├── index.html
    ├── style.css
    └── script.js
    
  3. Dodanie plików do repozytorium: Możesz dodać swoje pliki do repozytorium. Na przykład, twój plik index.html z początkowym kodem strony.

  4. Commit i push: Po dodaniu plików, zapisujesz zmiany w lokalnym repozytorium ( git commit) i wysyłasz je na serwer GitHub (git push).

    bash
    git add index.html
    git commit -m "Dodanie pliku index.html"
    git push origin main
    
  5. Współpraca z innymi: Twój kolega może teraz sklonować (skopiować w całości - z całą historią projektu) twoje repozytorium na swój komputer, wprowadzać zmiany i wysyłać je z powrotem na GitHuba. Możecie śledzić, kto, kiedy i jakie zmiany wprowadził, oraz łączyć różne wersje kodu.

    bash
    git clone https://github.com/twoje-imie/Projekt-MojaStrona.git
    
  6. Pull Request: Jeśli twój kolega wprowadzi duże zmiany, może stworzyć tzw. pull request, czyli prośbę o połączenie jego zmian z główną wersją projektu. Możesz przeglądać zmiany, dyskutować o nich i zdecydować, czy je zaakceptować.

Korzyści z używania GitHuba

  • Wersjonowanie: Śledzenie wszystkich zmian w projekcie.
  • Współpraca: Łatwa praca zespołowa, bez względu na to czy pracujecie zdalnie czy siedziecie w jednym biurze.
  • Bezpieczeństwo: Kopia zapasowa kodu zapisana w chmurze.
  • Społeczność: Możliwość współpracy z programistami z całego świata, korzystanie z ich kodu (open source) oraz dzielenie się własnymi projektami.

Co to jest Git?

Git to narzędzie do zarządzania wersjami kodu.

Umożliwia programistom śledzenie zmian w plikach, cofanie się do poprzednich wersji i współpracę nad projektem z innymi.

Dzięki Gitowi możesz zawsze wiedzieć, kto, kiedy i jakie zmiany wprowadził do kodu, co jest szczególnie przydatne, gdy pracujesz w zespole.

Jak Git działa w praktyce?

Wyobraź sobie, że piszesz książkę.

Każdego dnia dodajesz nowe rozdziały i poprawiasz błędy. Zamiast zapisywać nowe wersje plików z różnymi nazwami (np. ksiazka_wersja1.doc, ksiazka_wersja2.doc), możesz użyć Gita, aby śledzić te zmiany w bardziej zorganizowany sposób.

  1. Inicjalizacja repozytorium Git: Zaczynasz od stworzenia repozytorium, czyli specjalnego folderu, w którym Git będzie śledził zmiany.

    bash
    git init
    
  2. Dodanie plików do śledzenia: Dodajesz swoje pliki (np. ksiazka.txt) do repozytorium, aby Git zaczął je śledzić.

    bash
    git add ksiazka.txt
    
  3. Commit: Zapisujesz stan plików w repozytorium. Commit to jak zapisanie wersji swojego pliku z notatką, co się zmieniło.

    bash
    git commit -m "Dodanie pierwszego rozdziału"
    
  4. Wprowadzenie zmian: Piszesz dalej swoją książkę, dodajesz nowe rozdziały, poprawiasz błędy itp.

  5. Kolejny commit: Znowu zapisujesz stan plików z opisem, co zmieniłeś.

    bash
    git commit -m "Dodanie drugiego rozdziału"
    
  6. Historia zmian: Możesz przeglądać historię wszystkich commitów, aby zobaczyć, jakie zmiany zostały wprowadzone i kiedy.

    bash
    git log
    

Korzyści wynikające z używania Gita?

  • Śledzenie zmian: Zawsze wiesz, jakie zmiany zostały wprowadzone i przez kogo.
  • Cofanie zmian: Możesz łatwo wrócić do poprzedniej wersji pliku, jeśli coś pójdzie nie po Twojej myśli i projekt się na przykład wysypie.
  • Praca w zespole: Ułatwia współpracę nad projektem, pozwalając wielu osobom pracować nad tym samym kodem bez konfliktów.
  • Bezpieczeństwo: Kod jest bezpiecznie przechowywany i łatwo dostępny, nawet jeśli coś niedobrego stanie się z twoim komputerem.

Git jest podstawowym narzędziem dla programistów, które pomaga utrzymać porządek w projektach i ułatwia pracę zespołową. Bez niego nie byłaby mozliwa tak wydajna praca jak teraz.

Co to jest Repozytorium Gita?

Repozytorium Git ( w skrócie repo) to miejsce, w którym przechowywany jest cały projekt wraz z historią wszystkich zmian, które były zrobione w projekcie.

Jest to struktura katalogów i plików, która pozwala na zarządzanie wersjami projektu, śledzenie zmian, cofanie się do poprzednich wersji oraz współpracę z innymi programistami.

Elementy repozytorium Gita

  1. Pliki i foldery projektu: Repozytorium zawiera wszystkie pliki i foldery, które tworzą twój projekt. Mogą to być pliki kodu źródłowego, dokumentacja, obrazy itp.

    plaintext
    /my_project
    ├── .git
    ├── index.html
    ├── style.css
    └── script.js
    
  2. Folder .git: To ukryty folder, który zawiera wszystkie dane potrzebne Git do śledzenia zmian w projekcie. Jest to serce repozytorium Git, gdzie przechowywana jest cała historia zmian, metadane i konfiguracja.

  3. Commity: Każdy commit to zapis stanu projektu w danym momencie. Commit zawiera informacje o tym, jakie zmiany zostały wprowadzone, kto je wprowadził i kiedy.

  4. Gałęzie (branches): Repozytorium może mieć wiele gałęzi, które pozwalają na równoległą pracę nad różnymi funkcjonalnościami. Gałąź main (lub master) to główny branch, ale możesz tworzyć inne gałęzie do pracy nad nowymi funkcjami lub poprawkami.

    plaintext
    main
    ├── feature-1
    ├── feature-2
    └── fix-bug-123
    

Jak wygląda użycie Gita w praktyce?

  1. Inicjalizacja repozytorium: Tworzysz nowe repozytorium w istniejącym folderze projektu.

    bash
    git init
    
  2. Dodanie plików do repozytorium: Dodajesz pliki do śledzenia przez Git.

    bash
    git add .
    
  3. Zapisanie zmian (commit): Tworzysz pierwszy commit, który zapisuje bieżący stan projektu.

    bash
    git commit -m "Initial commit"
    
  4. Tworzenie gałęzi: Tworzysz nową gałąź do pracy nad nową funkcją.

    bash
    git checkout -b feature-new-function
    
  5. Praca w nowej gałęzi: Wprowadzasz zmiany i zapisujesz je w nowej gałęzi.

    bash
    git add .
    git commit -m "Add new function"
    
  6. Łączenie gałęzi (merge): Po zakończeniu pracy nad nową funkcją łączysz ją z główną gałęzią.

    bash
    git checkout main
    git merge feature-new-function
    

Git i GitHub - główne różnice i zastosowanie

Git i GitHub to dwa różne, ale ściśle powiązane narzędzia, które są często używane razem przez programistów.

Postaram się w prosty sposób wyjaśnić, czym są i w jaki sposób się różnią:

Git

Git to narzędzie do kontroli wersji, które działa lokalnie na twoim komputerze.

Pozwala na śledzenie zmian w kodzie, cofanie się do poprzednich wersji, pracę nad różnymi wersjami projektu jednocześnie oraz współpracę z innymi programistami.

Git nie wymaga połączenia z Internetem do większości swoich operacji.

Kluczowe funkcje Gita:

  • Śledzenie zmian: Git pozwala na śledzenie, które zmiany zostały wprowadzone do plików i przez kogo.
  • Commit: Zapisuje aktualny stan projektu z komentarzem opisującym zmiany.
  • Branching: Tworzenie gałęzi (branches) umożliwia pracę nad różnymi wersjami projektu równocześnie.
  • Merge: Łączenie gałęzi pozwala na scalanie zmian z różnych wersji projektu.

Przykładowe komendy Gita:

  • git init: Inicjalizacja nowego repozytorium.
  • git add: Dodanie plików do śledzenia.
  • git commit: Zapisanie zmian w repozytorium.
  • git branch: Tworzenie i zarządzanie gałęziami.
  • git merge: Łączenie gałęzi.

GitHub

GitHub to platforma webowa (online) do hostowania repozytoriów Git. Jest to miejsce, gdzie możesz przechowywać swoje repozytoria Git w chmurze, udostępniać je innym, współpracować z innymi programistami oraz korzystać z narzędzi do zarządzania projektami.

Kluczowe funkcje GitHuba:

  • Hostowanie repozytoriów: Przechowywanie repozytoriów Gita w Internecie, co umożliwia dostęp do nich z dowolnego miejsca.
  • Współpraca: Możliwość pracy nad kodem z innymi programistami, niezależnie od lokalizacji.
  • Pull Requests: Mechanizm pozwalający na przeglądanie, dyskusję i akceptowanie zmian wprowadzanych przez innych.
  • Issues: Narzędzie do zarządzania zadaniami, bugami (błędami) i sugestiami dotyczącymi projektu.
  • Continuous Integration/Continuous Deployment (CI/CD): Automatyzacja testowania i wdrażania kodu.

Przykładowe użycie GitHuba:

  • Tworzenie nowego repozytorium: Zakładasz repozytorium na GitHub, aby przechowywać swój projekt na specjalnej platformie online.
  • Klony repozytorium: Inni programiści mogą sklonować twoje repozytorium, aby pracować nad nim lokalnie.
  • Pull Requests: Jeśli ktoś wprowadzi zmiany w swoim sklonowanym repozytorium, może utworzyć pull request, aby zaproponować swoje zmiany do twojego repozytorium.

Podsumowanie

  • Git: Narzędzie do kontroli wersji, które działa lokalnie. Umożliwia śledzenie zmian w kodzie, tworzenie gałęzi, cofanie zmian i wiele innych.
  • GitHub: Platforma internetowa do hostowania repozytoriów Git, współpracy nad kodem, przeglądania zmian i zarządzania projektami.

Używając Gita na swoim komputerze, możesz lokalnie śledzić zmiany w kodzie. Kiedy będziesz gotowy, możesz przesłać (push) swoje zmiany do repozytorium na GitHubie, aby udostępnić je innym lub pracować nad nimi zdalnie.

 Usługi oferowane przez GitHuba

GitHub oferuje wiele usług, które ułatwiają zarządzanie projektami, współpracę nad kodem oraz automatyzację procesów związanych z tworzeniem kodu.

Przede wszystkim, GitHub oferuje:

1. Hostowanie repozytoriów Gita

GitHub umożliwia przechowywanie repozytoriów Gita w chmurze, co pozwala na dostęp do nich z dowolnego miejsca. Możesz tworzyć zarówno publiczne, jak i prywatne repozytoria.

2. Współpraca i kontrola wersji

  • Pull Requesty: Narzędzie do przeglądania i zatwierdzania zmian wprowadzonych przez innych programistów. Pozwala na dyskusję i komentowanie kodu przed jego połączeniem (merge) z główną gałęzią.
  • Code Review: Możliwość przeglądania i komentowania kodu przez członków zespołu, co ułatwia wykrywanie błędów i poprawianie jakości kodu.
  • Branche: Zarządzanie gałęziami projektów, co umożliwia równoległą pracę nad różnymi funkcjami lub poprawkami.

3. Zarządzanie projektami

  • Issues: Narzędzie do śledzenia zadań, bugów i sugestii dotyczących projektu. Każde issue może być przypisane do konkretnych osób, oznaczone etykietami (labels) i przypisane do kamieni milowych (milestones).
  • Project Boards: Tablice Kanban do zarządzania zadaniami, które umożliwiają wizualizację postępu prac nad projektem.
  • Wikis: Dokumentacja projektu może być przechowywana i zarządzana w formie wiki, co ułatwia tworzenie i utrzymywanie dokumentacji.

4. Automatyzacja

  • GitHub Actions: Platforma do automatyzacji przepływów pracy (workflows), która pozwala na tworzenie zautomatyzowanych procesów takich jak ciągłe integracja (CI) i ciągłe wdrażanie (CD).

Możesz definiować zadania, które będą uruchamiane na różnych etapach rozwoju projektu (np. testowanie, budowanie, wdrażanie).

  • Dependabot: Automatyczne aktualizowanie zależności projektu, co pomaga w utrzymaniu bezpieczeństwa i aktualności bibliotek używanych w projekcie.

5. Hosting stron

  • GitHub Pages: Usługa umożliwiająca hostowanie statycznych stron internetowych bezpośrednio z repozytoriów GitHub. Jest często używana do hostowania dokumentacji projektów, blogów czy stron osobistych.

6. Bezpieczeństwo

  • Security Alerts: Powiadomienia o potencjalnych problemach z bezpieczeństwem w zależnościach projektu, wraz z sugestiami dotyczącymi ich naprawy.
  • Code Scanning: Analiza kodu pod kątem luk bezpieczeństwa i potencjalnych błędów.

7. Integracje

  • Marketplace: GitHub Marketplace oferuje szeroką gamę narzędzi i aplikacji, które integrują się z GitHubem, rozszerzając jego funkcjonalności (np. narzędzia do analizy kodu, zarządzania projektami, automatyzacji).

8. Wspólnota i edukacja

  • GitHub Community: Forum i zasoby edukacyjne dla programistów na różnych poziomach zaawansowania.
  • GitHub Classroom: Narzędzie dla edukatorów do zarządzania zadaniami programistycznymi dla studentów.

9. Packages

  • GitHub Packages: Usługa umożliwiająca przechowywanie i zarządzanie pakietami (np. npm, Docker) bezpośrednio na GitHub, co ułatwia dystrybucję kodu i zasobów.

Podsumowanie

GitHub jest obecnie najpopularniejszym serwisem internetowym do hostowania repozytoriów Gita w chmurze.

GitHub umożliwia programistom zarządzanie projektami programistycznymi, przechowywanie i udostępnianie swojego kodu źródłowego oraz korzystanie z systemu kontroli wersji Git.

GitHub jest kompleksowym narzędziem, które wspiera cały cykl życia różnorodnych aplikacji – od kodowania i współpracy w zespołach, przez zarządzanie projektami i automatyzację, aż po bezpieczeństwo i hostowanie.

Dzięki szerokiemu wachlarzowi funkcji, GitHub jest niezwykle popularny wśród programistów i zespołów deweloperskich na całym świecie.

authorImg

Witek Pruchnicki

Z pasją dzielę się wiedzą o programowaniu i nie tylko na różne sposoby