No i git – po co mi właściwie system kontroli wersji?

Czy miałeś kiedyś sytuację, gdy miałeś już praktycznie działającą aplikację, wprowadziłeś kilka poprawek do kodu i nagle wszystko się sypnęło? Co więcej, poprawki dotyczyły kilku(nastu) plików, a Ty nie miałeś ich działającej kopii? A może na dysku twardym trzymasz kopię danej aplikacji w folderach typu „projekt v1”, „projekt v2”, „projekt v2.4.3”? Wiedz, że można sobie ułatwić życie. Do tego służy właśnie GIT lub inny, np svn.

No to czym jest ten git?

git-branches
Działanie na gałęziach

Krótko mówiąc, git jest systemem kontroli wersji, umożliwiającym zapisywanie stanu plików i po edycji można cofnąć się do dowolnego zapisanego momentu. Załóżmy, że masz 10 plików w stanie A, robisz pierwszy commit, czyli zapis tego stanu, potem edytujesz 3 z tych plików do stanu B, sprawdzasz działanie aplikacji – działa! No to kolejnny commit. Okej, zmiany się posuwają, wprowadzasz kolejne zmiany w innych plikach do stanu C – coś się posypało. No to przywracamy wersję B, ale w sumie coś Ci się nie podoba, zmiany były niepotrzebne, no to pach, wracamy do stanu A.

Tak działa system kontroli wersji w DUŻYM UPROSZCZENIU. To tylko ilustruje działanie gita i podobnych, a jego możliwości są o wiele, wiele większe. Chociażby praca na gałęziach – wyobraź sobie, że mamy główną wersję, działającą – nazywamy ją master. Teraz wprowadzając zmiany, tworzymy kolejną gałąź i na niej pracujemy, aby nie zepsuć aplikacji w głównej gałęzi. Gdy poprawki okażą się działające – łączymy gałęzie, a Twoje poprawki są już w gałęzi master.

Po co mi git?

Wystarczy przemyśleć sytuację we wstępie. Git pozwala w łatwy sposób pracować nad projektem i jedną głupią zmianą nie zepsuć całości projektu – jest to też ważne, gdy nad nim pracuje kilka osób – wtedy używając gita wiadomo kto, kiedy i jakie poprawki wprowadził. Co więcej, oprócz tworzenia lokalnych repozytoriów, można wysyłać na zdalny serwer, np na github’a. Mówiąc krótko, możesz zaoszczędzić sobie i partnerom wiele nerwów i straconego czasu na poprawianie nieudanej poprawki. Poza tym git jest mega prosty w użyciu.

A co z innymi systemami kontroli wersji?

Jest jeszcze kilka innych np. subversion (svn), między nimi są subtelne, a czasem mniej subtelne różnice – osobiście korzystam z gita, wiele nie mogę powiedzieć o innych – możesz spróbować i podzielić się wrażeniami. Nie chcę też wchodzić w szczegóły, od tego jest dokumentacja (pl).

Podsumowując – jeśli chcesz sobie oszczędzić nerwów, polecam użycie systemu kontroli wersji. Nawet w małych projektach – na takich najłatwiej się nauczyć zasady działania tego ustrojstwa. Możesz też podzielić się doświadczeniem w komentarzu 😉