Od początku projektów programistycznych był problem z wersjonowaniem kodu. Próbowano go rozwiązać na wiele sposobów, przez dyskietki, później płyty, aż po trzymanie spakowanych wersji kodu w dyskach sieciowych. Teraz używa się systemów kontroli wersji, a najpopularniejszym z nich jest Git.

Git to rozproszony system kontroli wersji, czyli program, który śledzi i zapisuje zmiany w plikach (ich różne wersje) projektu, posiada pełną historię wszystkich zmian (wersji) i zapisuje te wszystkie informacje w tak zwanym repozytorium. Co więcej, mając pełną historię, możemy w dowolnym momencie na przykład usunąć najnowsze zmiany czy wrócić do jakiejś starszej wersji. Brzmi ciekawie, prawda?

System kontroli wersji możemy dodać do czegokolwiek. Twoim projektem może być folder z przykładowo plikami na pracę semestralną, projektem książki, stroną internetową czy fakturami. Wszystko, czego historię zmian w plikach chcesz zachować.

Wracając do Gita – dlaczego akurat o nim opowiadam? Git, jak widzisz w tytule tego postu, to najpopularniejszy system kontroli wersji. Złożyło się na to kilka czynników:

Szybkość działania

Git jest jednym z najszybszych systemów kontroli wersji. Pobieranie zmian, wrzucanie swoich czy sprawdzanie zmian innej osoby – wszystko działa bardzo szybko.

Decentralizacja

W Gicie każdy użytkownik repozytorium ma jego kopię, dzięki czemu po pierwsze każdy pracuje nad swoimi zmianami niezależnie od reszty zespołu i po drugie w przypadku usunięcia swojego repozytorium można je bardzo łatwo odzyskać czy to z repozytorium zdalnego, czy to z repozytorium innego członka zespołu.

Prostota używania

Aby zacząć używać Gita należy poznać tylko kilka komend. Są one bardzo proste, dzięki czemu początek używania Gita jest łatwy, a jego używanie jest bardzo intuicyjne i, szczerze mówiąc, całkiem przyjemne.

Wsparcie dla pracy wielu osób

Dzięki rozgałęzieniu (branch) każdy użytkownik może bezkonfliktowo pracować nad swoimi zmianami, nie przeszkadzając innym w ich pracy. Więcej o branchach wkrótce.

Praca offline

Aby pracować z Gitem, potrzebujemy internetu, aby pobrać najnowsze zmiany ze zdalnego repozytorium, później możemy pracować offline, korzystając tylko z naszego lokalnego Gita, a dopiero na sam koniec potrzeba internetu do wysłania swoich zmian na repozytorium zdalne.

Zdalne repozytorium

Git pozwala nam na pracę ze zdalnymi repozytoriami. Na zdalnym repozytorium znajduje się kopia wszystkich naszych zmian oraz historia zmian, a każda osoba zaczynająca prace w projekcie pobiera i wysyła zmiany właśnie na to zdalne repozytorium. Dzięki wbudowanym mechanizmom Git zarządza łączeniem ze sobą plików zmienianych przez wiele osób, a w przypadku konfliktu (czyli dwie lub więcej osób zmieniło ten sam plik) informuje nas o nim i prosi o rozwiązanie problemu. Sprawia to, że praca zespołu osób przebiega sprawniej.

Historia Gita

Może kawałek historii. Git został stworzony przez Linusa Torvaldsa jako narzędzie pomagające w rozwoju jądra linuxa. Pierwsza oficjalna wersja ujrzała światło dzienne 7 kwietnie 2005 roku. Od tego czasu wiele się zmieniło na lepsze, a Git stał się podstawowym narzędziem w większości projektów informatycznych.

Instalacja

Jeżeli masz taką możliwość, najlepiej zainstalować Gita ze źródeł. Wtedy masz pewność, że jest w najnowszej wersji, ale są prostsze sposoby.

Aby zainstalować Gita globalnie pod Linuxem, należy użyć poniższych komend.
Dla dystrybucji opartej na Debianie:

apt-get install git

Dla Fedory:

yum install git-core

Najprostsza instalacja dla komputerów Mac polega na ściągnięciu i użyciu instalatora. Pobrać go można ze strony:

http://sourceforge.net/projects/git-osx-installer/

Najprostsza instalacja dla komputerów Windows również przebiega przez pobranie i użycie instalatora. Strona, na której go możecie pobrać to:

http://msysgit.github.com/

Podstawowa konfiguracja

Udało nam się zainstalować Gita na naszej maszynie. Pierwszą rzeczą, którą najlepiej zrobić po zainstalowaniu Gita jest ustawienie globalnej nazwy i e-maila. Można to zrobić, wykonując poniższe komendy w konsoli/terminalu:

git config --global user.name "Dawid Kozak"
git config --global user.email dawid@rwbit.pl

Oczywiście zamiast moich danych wstawcie swoje :)
Właśnie ustawione dane te są integralną częścią każdej paczki zmian (commit) i muszą być ustawione przed wysłaniem zmian na serwer lokalny czy globalny. Jeżeli chcecie później zmienić te dane, użyj tych samych komend z nowymi danymi. Jeżeli chcesz zmienić dane tylko dla jednego projektu, użyj powyższych komend bez „–global”:

git config user.name "Dawid Kozak"
git config user.email dawid@rwbit.pl

Poszukiwanie pomocy

Jeżeli szukasz pomocy z jakąś komendą, użyj jednej z poniższych komend:

git help <polecenie>
git <polecenie> --help
man git-<polecenie>

Na przykład:

git help commit

Koncepcja pracy z Gitem

Repozytoria Gita dzielą się na 2 rodzaje – repozytorium zdalne i repozytorium lokalne.

Repozytorium zdalne to te, które istnieje sobie gdzieś tam w internecie i w uproszczeniu każdy może mieć do niego dostęp. Coś jak strona internetowa – ktoś kto ma odpowiedni link i prawa może wejść i obejrzeć lub cos zmienić. W internecie jest wiele stron oferujących założenie repozytoriów zdalnych. Darmowe repozytoria zdalne można założyć na paru stronach, a najpopularniejsze z nich to Github, Bitbucket i Gitlab. Polecam zwłaszcza pierwszą z nich – Github.

Repozytorium lokalne to repozytorium, które masz tylko i wyłącznie na swoim komputerze. Od momentu pobrania zmian z repozytorium zdalnego pracujesz na repozytorium lokalnym i zanim nie wrzucisz swoich zmian na repozytorium zdalne – nikt poza tobą ich nie widzi. Ma to swoje plusy i minusy, a wszystkie je omówię w kolejnym wpisie.

Pracę z gitem można podzielić w zasadzie na 3 części:

Pobranie zmian ze zdalnego repozytorium (potrzebny internet)

Ten etap jest prosty, ale ważny. Zawsze, ale to zawsze, przed rozpoczęciem pracy pobierz najnowsze zmiany z repozytorium zdalnego do naszego lokalnego. Dlaczego? Otóż ktoś inny mógł zmienić plik, nad którym chcesz pracować, przez co możesz mieć wiele problemów z dodaniem swoich zmian do repozytorium. Ten etap wymaga od nas połączenia z internetem, gdyż repozytorium zdalne, jak sama nazwa wskazuje, jest zdalne, gdzieś na drugim końcu kabla z internetem.

Praca nad swoim zadaniem (offline)

Teraz pracujesz lokalnie. Wszystkie zmiany, które zrobiłeś, są w repozytorium lokalnym, więc prosto jest cos poprawić czy zmienić.

Wysyłanie zmian na serwer (potrzebny internet)

Kiedy jesteśmy pewni, że skończyliśmy swoje zadanie, i chcemy pokazać innym członkom zespołu nasze zmiany, musimy je wysłać z naszego repozytorium lokalnego na repozytorium zdalne. Po wysłaniu można je spokojnie obejrzeć na stronie repozytorium.

Podsumowanie

Tak mniej więcej prezentuje się Git. Jest to potężne narzędzie, które pomaga wielu programistom, a wiedza jak go używać będzie nieoceniona. Uważam, że każdy powinien nauczyć się podstaw Gita, dlatego w kolejnych wpisach pokaże Ci podstawy Gita i razem utworzymy testowy projekt.

Jeżeli masz jakieś pytania – śmiało zadaj je w komentarzach.