Słów kilka na temat systemu kontroli wersji i kilka wskazówek do gita...
Czy słyszałeś na studiach o systemie kontroli wersji? Czy pokazano i wytłumaczono Ci jak to działa? Jeśli Twoja odpowiedź brzmi „nie”, a studiujesz lub dopiero zaczynasz swoją przygodę z programowaniem, to ten artykuł jest właśnie dla Ciebie. Przybliżę Ci w nim czym są systemy kontroli wersji, zapoznam Cię także z jednym z najbardziej popularnych tego typu systemów (Git).
Aby rozmawiać o systemach kontroli wersji musimy uświadomić sobie po co w ogóle wymyślono takie narzędzie? Odpowiedź na to pytanie jest bardzo prosta, więc pozwolę Ci dojść do niej samemu.
Załóżmy, że studiujesz i piszesz ze znajomym aplikację na zaliczenie. Masz w niej fragment kodu odpowiedzialny za zmianę tła co 5s. Oddajecie aplikację do oceny wykładowcy, a ten mówi że tło miało być tęczowe, a nie migać w idiotyczny sposób. Wracasz i siadasz do komputera, lekko zniesmaczony robisz klikasz na pliku „kopiuj”, następnie obok klikasz „wklej” i do nazwy do pisujesz aktualną datę - brzmi znajomo? - Wykładowca każe dorobić jeszcze przycisk, który zmieni kolor tła na losowy i tym zadaniem ma się zająć Twój znajomy. Każdy robi to co zostało mu przydzielone. Gdy spotykacie się następnym razem przed oddaniem aplikacji okazuje się, że zrobiliście od groma różnych zmian i nie sposób jest teraz to połączyć niczego nie psując.
Jakie problemy dostrzegasz w tej scence? Ja widzę tutaj:
Duplikacja plików
Zwiększenie zajmowanego miejsca
Zwiększenie prawdopodobieństwa na pracę na złym pliku
Brak czytelnej i jasnej historii zmian
Brak możliwości jednoczesnej i bezkonfliktowej pracy na pliku przez kilka osób
Jak widzisz istnieje kilka problemów, z którymi trzeba się zmierzyć. Systemy kontroli wersji (w skrócie VCS) rozwiązują te problemy. Możemy zatem stwierdzić, że VCS jest narzędziem ułatwiającym śledzenie zmian w plikach oraz łączenie efektu pracy kilku osób w jedną całość.
Jak zatem powinien działać taki system, aby rozwiązać problemy o których wyżej rozważaliśmy? I tutaj bywa różnie. Systemów kontroli wersji powstało już wiele i generalnie możemy je podzielić na 3 grupy mając na uwadze ich architekturę: lokalne, scentralizowane, rozproszone. Różnią się one sposobem przechowywania plików. Kolejnego podziału można dokonać ze względu na sposób w jaki system wykrywa, że nastąpiły zmiany - jedne pracują na zestawach zmian, drugie na zmianach zawartości w plikach. Historia zmian wygląda jak drzewo. Użytkownicy tworzą swoje gałęzie (branches) od interesującego ich wątku.
Przejdziemy teraz do omówienia jednego z najbardziej popularnych VCS i wyjaśnienia jak ono funkcjonuje. Prawdopodobnie już się z nim spotkałeś szukając jakieś informacji, a chłopaki ze „stacka” odesłali Cię na czyjegoś GitHuba. Git -bo tak się nazywa - jest to narzędzie wymyślone przez Linusa Torvaldsa (tak, to ten sam który odpowiedzialny jest za powstanie jądra Linuxa). Należy on do grupy systemów rozproszonych - każdy użytkownik ma na swoim komputerze kopie wszystkich danych projektu. W poniższych krokach przedstawię Ci jak rozpocząć pracę z Gitem.
Krok 1: Instalacja Gita
Instalacja na każdym systemie wygląda troszkę inaczej. Jeśli korzystasz z Windowsa po prostu wejdź na stronę gitforwindows.org i kliknij w wielki przycisk „Download”. Instalacja wygląda tak samo jak w przypadku 90% programów, klikasz cały czas dalej. Jeśli masz maczka to sprawa jest znacznie prostsza, nie musisz nic robić bo masz go w standardzie zainstalowanego. W przypadku Linuxa możesz skorzystać z narzędzi yum lub apt-get.
Krok 2: Konfiguracja
Teraz musisz ustawić swoje dane, robisz to po to aby pozostawić informację o tym kto dokonał danych zmian. Dane jakie musisz wprowadzić to nazwa oraz email. Otwórz terminal a następnie wklej polecenia, które widzisz poniżej.
$ git config --global user.name „Twoja nazwa"
$ git config --global user.email twoj@email.com
Krok 3: Tworzenie repozytorium
Najwygodniejszą opcją jest utworzenie repozytorium na serwerze i jego sklonowanie na swój komputer. Serwer możesz „postawić” samemu lub skorzystać z istniejących już narzędzi. Opcji masz naprawdę wiele, sugeruję sprawdzić GitHub (bardzo popularne) oraz Bitbucket (darmowe prywatne repozytoria).
Krok 4: Podłączenie naszego komputera z repozytorium
Jeśli utworzyłeś repozytorium na serwerze to teraz musisz je sklonować. Aby to zrobić musisz otworzyć terminal i wpisać/wkleić tam następujące polecenie:
$ git clone _twoje_repozytorium_
Jeśli utworzyłeś repozytorium w jednym z sugerowanych przeze mnie miejsc, to po wejściu w nie powinieneś znaleźć tam dokładne polecenie, które wystarczy wkleić w terminalu.
Krok 5: „Pierwszy commit, pierwszy push”Gdy już ma sklonowane repozytorium i edytowałeś jakiś plik będziesz mógł dodać swoje zmiany. Aby to zrobić musisz otworzyć terminal, a następnie przejść do swojego repozytorium. Teraz sprawdzimy co tak naprawdę się stało, wpisz:
$ git status
zobaczysz teraz branch, na którym pracujesz oraz listę plików które zmieniałeś.
Pliki mogą znajdować się w kilku stanach:
Untracked
Unmodified
Modified
Staged
Aby dodać plik na którym pracowałeś wpisz:
$ git add _nazwa_pliku_
Jeśli chcesz dodać wszystkie pliki wpisz:
$ git add -A
Teraz możemy opisać zmiany jakie wprowadziliśmy w plikach - tak by później w historii było to łatwo znaleźć. Aby to zrobić wpisz:
$ git commit -m „Tutaj opisz swoje zmiany”
Teraz twoje zmiany są gotowe do publikacji, aby to zrobić wpisz:
$ git push
Tyle! Teraz możesz zobaczyć na serwerze przechodząc do swojego repozytorium zmiany jakie dodałeś.
Jeśli nie jesteś fanem terminala możesz pobrać z sieci narzędzie do gita z ładnym UI. Ja mogę Ci zasugerować, abyś sprawdził Fork oraz SourceTree.
Pamiętaj jednak, że to tylko narzędzia, a nie magiczne rozwiązanie. Takie rzeczy jak nazwy commitów mają bardzo duże znaczenie.
Przykład złych nazw commitów:
* Fix.
* Better fix.
* Done.
* Almost done.
* Fire!
Jeśli macie do mnie jakieś pytania to chętnie na nie odpowiem, zapraszam do ich zadawania 🙂
Specjalnie dla Android.com.pl
Łukasz Bednarczyk