REVEAL theme=simple&disableLayout=0&transition=none&controls=1&show_progress_bar=1&build_all_lists=0&show_image_borders=0&horizontal_slide_level=2&enlarge_vertical_slide_headers=0&show_slide_details=1&open_in_new_window=1&size=1024×768
Systemy kontroli wersji Git i GitHub
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
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)
-
-
Architektura rozproszona
<fs x-small>Źródło: http://git-scm.com</fs>
Każdy węzeł przechowuje całą historię repozytorium.
Historia zmian projektu
master (lub main) - gałąź główna
branches - odgałęzienia, wersje rozwojowe
tags - wersja zamrożona (np. v.1.0), etykieta
Repozytoria git w Visual Studio
Dodawanie rozwiązania do git
Wybieramy Add to Source Control z paska statusu
przed
po
Okno: Zmiany git
Okno: Repozytorium git
Etapy pracy git
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
Zatwierdzanie zmian
okno Zmiany git zawiera listę wykrytych zmian
Zatwierdź wszystko (commit) - zatwierdzenie zmian
zmiany muszą być opatrzone opisem
Historia zmian
Porównywanie zmian w pliku
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
Ć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
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
Tworzenie gałęzi
Scalanie gałęzi (merge)
GitHub
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
Żą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 |
 |  |
Typowy przepływ pracy
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
A successful Git workflow
Klonowanie repozytorium z GitHub
Git → Klonuj repozytorium
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 *
*****************