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:
-
Założenie konta na GitHub: Najpierw zakładasz konto na GitHub.com.
-
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.
plaintextProjekt-MojaStrona ├── index.html ├── style.css └── script.js
-
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. -
Commit i push: Po dodaniu plików, zapisujesz zmiany w lokalnym repozytorium ( git commit) i wysyłasz je na serwer GitHub (git push).
bashgit add index.html git commit -m "Dodanie pliku index.html" git push origin main
-
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.
bashgit clone https://github.com/twoje-imie/Projekt-MojaStrona.git
-
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.
-
Inicjalizacja repozytorium Git: Zaczynasz od stworzenia repozytorium, czyli specjalnego folderu, w którym Git będzie śledził zmiany.
bashgit init
-
Dodanie plików do śledzenia: Dodajesz swoje pliki (np.
ksiazka.txt
) do repozytorium, aby Git zaczął je śledzić.bashgit add ksiazka.txt
-
Commit: Zapisujesz stan plików w repozytorium. Commit to jak zapisanie wersji swojego pliku z notatką, co się zmieniło.
bashgit commit -m "Dodanie pierwszego rozdziału"
-
Wprowadzenie zmian: Piszesz dalej swoją książkę, dodajesz nowe rozdziały, poprawiasz błędy itp.
-
Kolejny commit: Znowu zapisujesz stan plików z opisem, co zmieniłeś.
bashgit commit -m "Dodanie drugiego rozdziału"
-
Historia zmian: Możesz przeglądać historię wszystkich commitów, aby zobaczyć, jakie zmiany zostały wprowadzone i kiedy.
bashgit 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
-
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
-
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. -
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.
-
Gałęzie (branches): Repozytorium może mieć wiele gałęzi, które pozwalają na równoległą pracę nad różnymi funkcjonalnościami. Gałąź
main
(lubmaster
) to główny branch, ale możesz tworzyć inne gałęzie do pracy nad nowymi funkcjami lub poprawkami.plaintextmain ├── feature-1 ├── feature-2 └── fix-bug-123
Jak wygląda użycie Gita w praktyce?
-
Inicjalizacja repozytorium: Tworzysz nowe repozytorium w istniejącym folderze projektu.
bashgit init
-
Dodanie plików do repozytorium: Dodajesz pliki do śledzenia przez Git.
bashgit add .
-
Zapisanie zmian (commit): Tworzysz pierwszy commit, który zapisuje bieżący stan projektu.
bashgit commit -m "Initial commit"
-
Tworzenie gałęzi: Tworzysz nową gałąź do pracy nad nową funkcją.
bashgit checkout -b feature-new-function
-
Praca w nowej gałęzi: Wprowadzasz zmiany i zapisujesz je w nowej gałęzi.
bashgit add . git commit -m "Add new function"
-
Łączenie gałęzi (merge): Po zakończeniu pracy nad nową funkcją łączysz ją z główną gałęzią.
bashgit 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.