→ Slide 1
Systemy kontroli wersji Git i GitHub
→ Slide 2
System kontroli wersji
repozytorium kodu (i nie tylko) z historią zmian
mechanizmy współdzielenia pracy członków zespołu, synchronizacja zmian
śledzenie zmian w kodzie, porównywanie różnic w wersjach kodu, patche
rozwój kolejnych wersji i gałęzi oprogramowania oraz mechanizmy łączenia ich
historia rozwoju, dokumentacja zmian w kolejnych wersjach
kopie bezpieczeństwa - możliwość wycofania zmian, powrotu do poprzedniego stanu
→ Slide 3
Git
zdecentralizowany, każdy użytkownik posiada pełną kopię repozytorium
można pracować lokalnie
większość operacji wykonywana lokalnie (szybszy w działaniu od scentralizowanych)
wygodny mechanizm tworzenia gałęzi
elastyczny, możliwość wdrożenia różnych workflow (procesów wytwórczych)
-
-
→ Slide 4
Architektura rozproszona
Źródło: http://git-scm.com
Każdy węzeł przechowuje całą historię repozytorium.
→ Slide 5
Historia zmian projektu
master (lub main) - gałąź główna
branches - odgałęzienia, wersje rozwojowe
tags - wersja zamrożona (np. v.1.0), etykieta
→ Slide 6
Repozytoria git w Visual Studio
→ Slide 7
Dodawanie rozwiązania do git
Wybieramy Add to Source Control z paska statusu
przed
po
→ Slide 8
Okno: Zmiany git
→ Slide 9
Okno: Repozytorium git
→ Slide 10
→ Slide 11
Najważniejsze komendy
Dodaj (add): dodanie nowego pliku do śledzenia
Zatwierdź (commit): zatwierdzenie zmian, powstaje nowy węzeł w repozytorium (lokalnie)
Wypchnij (push): wypchnięcie zmian do zdalnego repozytorium
Ściągnij (pull): pobranie zmian i scalenie z lokalną kopią
tworzenie i scalanie gałęzi (merge)
cofanie zmian (revert), przywracanie poprzednich stanów (reset)
przeglądanie i porównywanie zmian w kodzie
→ Slide 12
Zatwierdzanie zmian
okno Zmiany git zawiera listę wykrytych zmian
Zatwierdź wszystko (commit) - zatwierdzenie zmian
zmiany muszą być opatrzone opisem
→ Slide 13
Historia zmian
→ Slide 14
Porównywanie zmian w pliku
→ Slide 15
Cofanie zmian
Cofnij zmiany (Undo changes) - wycofywanie niezatwierdzonych zmian
Przywróć (Revert) - cofanie zatwierdzonych zmian, nie zmienia historii ale tworzy nowy punkt w historii
Resetuj (Reset) - przywraca historyczną wersję repozytorium
↓ Slide 16
Ćwiczenia
Dodaj rozwiązanie projektu (dowolnego) do repozytorium git
Dokonaj przynajmniej jednej zmiany w kodzie i zatwierdź zmiany w repozytorium
Obejrzyj zmiany w oknie historii
Porównaj zmiany
→ Slide 17
Gałęzie (branches)
gałęzie zawierają równolegle rozwijane wersje kodu, pomiędzy którymi możemy w prosty sposób się przełączać (checkout)
master domyślna nazwa głównej gałęzi
→ Slide 18
Tworzenie gałęzi
→ Slide 19
→ Slide 20
GitHub
-
repozytoria publiczne i prywatne
zarządzanie projektem zespołowym: zgłoszenia Issue Tracker
komentarze do kodu
mechanizm żądania ściągnięcia (pull request) i rewizje kodu
integracja z wieloma narzędziami
-
→ Slide 21
Synchronizacja ze zdalnym repozytorium
Wypchnij (push
) - wypchnięcie zmian
Pobierz (fetch
) - pobieranie zmian (ale bez scalania)
Ściągnij (pull
) - pobieranie zmian i scalenie z lokalną kopią
Sync - ściągnij a następnie wypchnij
→ Slide 22
Żądanie ściągnięcia
Po wysłaniu zmian umieszczonych w osobnej gałęzi możemy poprosić członków zespołu o weryfikację kodu i dodanie do głównej gałęzi
VS 2022 | GitHub |
 |  |
→ Slide 23
Typowy przepływ pracy
Źródło: https://www.atlassian.com/blog/bitbucket/5-pull-request-must-haves
tworzymy nową gałąź (nowa funkcja, naprawa błędu, …)
zmieniamy zawartość nowej gałęzi i zatwierdzamy zmiany (commit)
gdy praca skończona wysyłamy gałąź do zdalnego repozytorium (push)
składamy prośbę (pull request) o weryfikację kodu i integrację z główną gałęzią
gdy zmiany zostaną przyjęte, wówczas aktualizujemy lokalną kopię ze zmianami, które mogli nanieść inni użytkownicy, rozwiązujemy konflikty
→ Slide 24
→ Slide 25
Klonowanie repozytorium z GitHub
Git → Klonuj repozytorium
→ Slide 26
Zadanie 1
Załóż konto w usłydze GitHub (jesli jeszcze nie posiadasz)
Zaakceptuj zadanie, którego adres otrzymałeś pocztą. Adres zaproszenia znajduje się również na stronie Moodle
tutaj
Sklonuj rozwiązanie znajdujące się w repozytorium GitHub
Wykonaj zadanie zgodnie z treścią. Treść zadania znajdziesz także w pliku README.md w repozytorium
Wypchnij rozwiązanie zadania do repozytorium GitHub skojarzonego z tym zadaniem
Napisz program, który prosi o wprowadzenie linii tekstu a następnie wyrysowuje podany tekst w ramce wg. poniższego wzoru
Podaj tekst: Witaj Świecie
*****************
* Witaj Świecie *
*****************
→ Slide 27