Jeśli myślisz o programowaniu na poważnie, nie obędziesz się bez znajomości Git’a. Czym jest? Dlaczego warto się go nauczyć? Gdzie szukać materiałów na start? Gdzie szukać hostingu dla Twojego kodu? To i jeszcze więcej znajdziesz w dzisiejszym artykule.
Artykuł nie jest tutorialem. Jest raczej podsumowaniem, zawiera informacje co, jak i gdzie. Linkuje do przydatnych źródeł w sieci, interaktywnych (i nie tylko) tutoriali.
Git
System kontroli wersji.
- Śledzi wszystkie zmiany dokonywane na plikach,
- Umożliwia podgląd tych zmian (nie tylko Twoich, ale wszystkich osób, pracujących nad danym projektem, kodem),
- Pozwala przywrócić dowolną wcześniejszą wersję.
Po co?
Wyobraź sobie 5 osób pracujących nad danym projektem. Projekt składa się z kilkuset plików. Każdy z członków zespołu pracuje nad swoimi funkcjonalnościami, ale czasem zmienia również pliki edytowane przez innych.
Wyobraź sobie teraz, że kończysz pewną funkcjonalność. W międzyczasie pare innych osób wyedytowało pewne pliki. Jak to teraz wszystko połączyć? Podglądać pliki i wprowadzać zmiany ręcznie? No way.
Tu właśnie z pomocą przychodzi Git. Każda z osób pracująca nad danym projektem pracuje „tak jakby” na swojej kopii projektu. Co jakiś czas „synchronizując” ją ze stanem dostępnym wszystkim. Szczegóły takiej współpracy definiuje ustalone Git workflow (o którym jeszcze będę pisać wkrótce).
Nad wszystkim kontrolę trzyma Git.
Zanim przejdę dalej, kilka obowiązkowych pojęć:
repozytorium (często nazywane w skrócie: repo) – jest to miejsce przechowywania Twojego kodu, niekoniecznie oznacza jeden projekt (ale najczęściej)
commit – zatwierdzenie zmian dokonanych na plikach, taka cała paczka zmian, którą łączysz pod wspólną ”nazwą” (commit ma swoją nazwę)
pull – zaciągnięcie aktualnego stanu zdalnego repozytorium (do lokalnego repozytorium)
push – wysłanie zmian do zdalnego repozytorium
branch
Gałąź projektu. Bardzo przydatna funkcjonalność. Dlaczego?
Załóżmy, że pracujesz nad daną funkcją aplikacji. W międzyczasie ktoś chce, żebyś poprawił coś na szybko – dajmy na to coś nad czymś pracowałeś wcześniej nie działa zgodnie z założeniami. Jeśli znasz coś takiego jak „gałęzie” – nie będzie to dla Ciebie problemem. Otóż, aktualnie wprowadzane zmiany przesuwasz na gałąź (o ile biorąc się za daną funkcjonalność nie utworzyłeś nowej gałęzi), a sam przełączasz się na gałąź, na której znajduje się kod do poprawienia.
To tak naprawdę w dużym uproszczeniu. W kolejnej części zamierzam opisywać swoje Git Workflow (jakie zastosowałam m.in. w projekcie konkursowym). Tam znajdziesz dużo więcej informacji nt. gałęzi 😉
Aaa… w środowisku IT używamy angielskich odpowiedników. Czyli nikt nie mówi: „Zatwiedziłem zmiany” tylko „Scommitowałem to na repo”. Nikt nie pyta na jakiej „gałęzi” coś znajdzie, a na którym branchu. (A może to tylko moje doświadczenia?)
Nie musisz umieszczać repozytorium na serwerze. Możesz commit’ować zmiany nawet lokalnie. Tłumacząc na ludzki – nie musisz szukać miejsca w sieci, gdzie umieścisz swój kod (publicznie lub nie), możesz korzystać z Git’a tylko na swoim komputerze. Prywatnie podpinam Git’a pod wszystkie projekty, które realizuje. Jest to po prostu wygodne i przydatne narzędzie.
Gdzie znajdziesz Git’a? Skąd go pobrać? Jak zainstalować?
Aktualną wersję znajdziesz na stronie git-scm – która jest nawiasem świetnym źródłem wiedzy nt. tego narzędzia.
Jak się nauczyć Git’a?
Jak wielu rzeczy w programowaniu – praktycznie.
Jeśli jesteś na początku swojej programistycznej ścieżki, warto zajrzeć na stronę tryGit. Znajdziesz tam interaktywny tutorial, który krok po kroku przeprowadzi Cię przez zawiłości Git’a.
Jeśli zaczynasz przydatna może być również mała ściąga – git – prosty przewodnik oraz w formie jednostronnicowego pliku PDF do pobrania.
Jeśli z kolei chcesz zrozumieć „o co chodzi z tymi gałęziami” (git branching) – bardzo przydatny element, polecam stronę Learn Git Branching. Przy czym proponuje zapoznać się lepiej z samym Git’em, zanim przejdziesz do operacji na gałęziach.
Fajną serię w temacie Git’a & Github’a (od podstaw, po polsku) znajdziesz również na blogu DevBlog.eu.
No i nie mogę nie wspomnieć o książce „Pro Git” (Scott Chacon & Ben Straub), która jest dostępna w wersji online za darmo (i to nawet po polsku). Sama się na niej uczyłam podstaw Git’a lata temu. Bardzo konkretna pozycja.
Jeśli z kolei znasz coś ciekawego na start, co warto by znalazło się na tej liście – daj znać w komentarzu 😉
Gdzie możesz umieścić swój kod?
Jeśli interesuje Cię hosting dla Twojego projektu możesz skorzystać z darmowych rozwiązań jak np.:
W przypadku Github – jest on darmowy dla projektów publicznych i open source’owych. Jeśli chcesz go wykorzystać jako repozytorium kodu, którego nie chcesz upubliczniać musisz skorzystać z planu płatnego. Chyba, że jesteś studentem – wtedy możesz skorzystać z tzw. Student Developer Pack, w skład którego wchodzi m.in. darmowy Github. Warto być studentem w dzisiejszych czasach – przypominam, że produkty JetBrains (WebStorm, PHPStorm, IntelliJ IDEA, itd.) też możesz dostać za darmo (będąc studentem).
Czy zawodowo będziesz korzystać z Git’a?
Prawdopodobnie tak.
Prawdopodobnie, ponieważ Git nie jest jedynym systemem kontroli wersji. Ale na chwilę obecną wydaje się najpopularniejszym. Inną opcją jest SVN (Subversion) – o którym może jeszcze kiedyś napiszę.
No to jak? Bierzesz się za naukę Git’a? A może już go znasz?