Co to jest kontrola wersji?
System kontroli wersji (VCS) to program lub zestaw programów śledzących zmiany w kolekcji plików. Jednym z celów vcS jest łatwe przypomnienie wcześniejszych wersji poszczególnych plików lub całego projektu. Innym celem jest umożliwienie kilku członkom zespołu pracy nad projektem, nawet na tych samych plikach, jednocześnie bez wpływu na pracę siebie.
Inną nazwą vcS jest system zarządzania konfiguracją oprogramowania (SCM). Dwa terminy są często używane zamiennie — w rzeczywistości oficjalna dokumentacja usługi Git znajduje się w git-scm.com. Technicznie kontrola wersji jest tylko jedną z praktyk związanych z usługą SCM. VcS może służyć do projektów innych niż oprogramowanie, w tym książek i samouczków online.
Za pomocą vcS można wykonywać następujące czynności:
- Wyświetlanie wszystkich zmian wprowadzonych w projekcie, terminów ich wprowadzenia i autorów.
- Dołącz komunikat z każdą zmianą, aby wyjaśnić przyczynę.
- Pobierz wcześniejsze wersje całego projektu lub poszczególnych plików.
- Tworzenie gałęzi, w których można eksperymentować ze zmianami. Ta funkcja umożliwia jednoczesne pracować nad kilkoma różnymi zestawami zmian (na przykład funkcjami lub poprawkami usterek), prawdopodobnie przez różne osoby bez wpływu na gałąź główną. Później możesz scalić zmiany, które chcesz zachować z powrotem w gałęzi głównej.
- Dołącz tag do wersji — na przykład, aby oznaczyć nową wersję.
Git to szybka, wszechstronna, wysoce skalowalna, bezpłatna, open source VCS. Jego głównym autorem jest Linus Torvalds, twórca systemu Linux.
Rozproszony system kontroli wersji
Wcześniejsze wystąpienia VCSes, w tym CVS, Subversion (SVN) i Perforce, używały scentralizowanego serwera do przechowywania historii projektu. Ta centralizacja oznaczała, że jeden serwer był również potencjalnie pojedynczym punktem awarii.
Usługa Git jest dystrybuowana, co oznacza, że kompletna historia projektu jest przechowywana zarówno na kliencie , jak i na serwerze. Pliki można edytować bez połączenia sieciowego, zaewidencjonować je lokalnie i zsynchronizować z serwerem, gdy połączenie będzie dostępne. Jeśli serwer ulegnie awarii, nadal będziesz mieć lokalną kopię projektu. Tak naprawdę nie trzeba nawet mieć serwera. Zmiany mogą być przekazywane w wiadomości e-mail lub udostępniane przy użyciu nośnika wymiennego, ale nikt nie używa usługi Git w praktyce.
Terminologia związana z usługą Git
Aby zrozumieć usługę Git, musisz poznać terminologię. Poniżej znajduje się krótka lista terminów, których użytkownicy usługi Git często używają. Nie przejmuj się szczegółami na razie; wszystkie te terminy będą znane podczas pracy nad ćwiczeniami w tym module.
Drzewo robocze: zestaw zagnieżdżonych katalogów i plików zawierających projekt, nad którymi pracujesz.
Repozytorium (repozytorium): katalog znajdujący się na najwyższym poziomie drzewa roboczego, w którym usługa Git przechowuje całą historię i metadane projektu. Repozytorium często jest określane jako repo. Nagie repozytorium jest to repozytorium , które nie jest częścią drzewa roboczego; jest ono używane do udostępniania lub tworzenia kopii zapasowych. Nagie repozytorium jest zwykle katalog o nazwie kończącej się na pliku .git — na przykład project.git.
Skrót: liczba wygenerowana przez funkcję skrótu reprezentującą zawartość pliku lub innego obiektu jako stałą liczbę cyfr. Usługa Git używa skrótów o długości 160 bitów. Jedną z zalet korzystania ze skrótów jest to, że usługa Git może stwierdzić, czy plik został zmieniony, wyznaczając wartość skrótu jego zawartości i porównując wynik z poprzednim skrótem. Jeśli sygnatura czasu i daty pliku zostanie zmieniona, ale skrót pliku nie zostanie zmieniony, usługa Git wie, że zawartość pliku nie zostanie zmieniona.
Obiekt: repozytorium Git zawiera cztery typy obiektów, z których każdy jest jednoznacznie identyfikowany przez skrót SHA-1. Obiekt blob zawiera zwykły plik. Obiekt drzewo reprezentuje katalog i zawiera nazwy, skróty i uprawnienia. Obiekt zatwierdzenie reprezentuje określoną wersję drzewa roboczego. Tag jest nazwą dołączoną do zatwierdzenia.
Zatwierdzenie: w przypadku użycia jako czasownik zatwierdzenie oznacza utworzenie obiektu zatwierdzenia. Ta akcja wzięła swoją nazwę od zatwierdzania w bazie danych. Oznacza to, że zatwierdzasz wprowadzone zmiany, aby inne osoby mogły je również zobaczyć.
Gałąź: gałąź to nazwana seria połączonych zatwierdzeń. Najnowsze zatwierdzenie w gałęzi jest nazywane nagłówkiem. Gałąź domyślna, która jest tworzona podczas inicjowania repozytorium, nosi nazwę
main
, często nosi nazwęmaster
w usłudze Git. Nagłówek bieżącej gałęzi nosi nazwęHEAD
. Gałęzie są niezwykle przydatną funkcją usługi Git, ponieważ umożliwiają deweloperom pracę niezależnie (lub razem) w gałęziach, a później scalanie ich zmian w gałęzi domyślnej.Zdalne: zdalne jest nazwanym odwołaniem do innego repozytorium Git. Podczas tworzenia repozytorium usługa Git tworzy zdalną nazwę
origin
, która jest domyślną zdalną funkcją dla operacji wypychania i ściągania.Polecenia, polecenia podrzędne i opcje: Operacje usługi Git są wykonywane przy użyciu poleceń takich jak
git push
igit pull
.git
jest poleceniem, apush
lubpull
jest podpoleceniem. Podpolecenie określa operację, którą ma wykonać usługa Git. Polecenia często towarzyszą opcjom, które używają łączników (-) lub podwójnych łączników (-). Na przykładgit reset --hard
.
Te terminy i inne, takie jak push
i pull
, będą bardziej zrozumiałe wkrótce. Ale musisz zacząć gdzieś i może okazać się, że warto wrócić i przejrzeć ten słownik terminów po zakończeniu modułu.
Wiersz polecenia usługi Git
Dla usługi Git jest dostępnych kilka różnych interfejsów UŻYTKOWNIKA, w tym github desktop. Wiele edytorów programowania, takich jak Microsoft Visual Studio Code, ma również interfejs usługi Git. Wszystkie działają inaczej i mają różne ograniczenia. Żaden z nich nie obejmuje wszystkich funkcji usługi Git.
Ćwiczenia w tym module korzystają z wiersza polecenia usługi Git — w szczególności poleceń git wykonywanych w usłudze Azure Cloud Shell. Jednak interfejs wiersza polecenia usługi Git działa tak samo, niezależnie od używanego systemu operacyjnego. Ponadto wiersz polecenia umożliwia korzystanie ze wszystkich funkcji usługi Git. Deweloperzy, którzy widzą usługę Git tylko za pośrednictwem graficznego interfejsu użytkownika, czasami znajdują się w konfrontacji z komunikatami o błędach, których nie mogą rozwiązać, i muszą uciekać się do wiersza polecenia, aby przejść ponownie.
Git i GitHub
Podczas pracy z usługą Git możesz się zastanawiać nad różnicami między oferowanymi przez nią funkcjami a funkcjami oferowanymi w usłudze GitHub.
Jak wspomniano wcześniej, usługa Git jest rozproszonym systemem kontroli wersji (DVCS), którego wielu deweloperów i innych współautorów może używać do pracy nad projektem. Umożliwia ona pracę z co najmniej jedną lokalną gałęzią, a następnie wypychanie ich do repozytorium zdalnego.
GitHub to platforma w chmurze, której podstawową technologią jest system Git. Usługa GitHub upraszcza proces współpracy nad projektami i udostępnia witrynę internetową, więcej narzędzi wiersza polecenia oraz ogólny przepływ, którego deweloperzy i użytkownicy mogą używać do współpracy. Usługa GitHub działa jako repozytorium zdalne wymienione wcześniej.
Najważniejsze funkcje udostępniane przez usługę GitHub to:
- Problemy
- Dyskusje
- Żądania ściągnięcia
- Notifications
- Etykiety
- Akcje
- Rozwidlenia
- Projekty
Aby dowiedzieć się więcej o usłudze GitHub, zobacz moduł Wprowadzenie do usługi Microsoft Learn w usłudze GitHub lub dokumentację pomocy Dotyczącej rozpoczynania pracy z usługą GitHub .
Następnym krokiem jest samodzielne wypróbowanie usługi Git!