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.

try git

Jeśli zaczynasz przydatna może być również mała ściąga – git – prosty przewodnik oraz w formie jednostronnicowego pliku PDF do pobrania.

git prosty przewodnik

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.

git learn branching

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? 

  • Używałem kiedyś SVN ale myślałem, że mnie krew zaleje. Te „ograniczenia” zdecydowanie nie są dla mnie. Za to Git to całkiem inna bajka 🙂

    PS O, i jakiego ja bloga zauważyłem 😀 Dzięki 🙂

    • Też używałam. I to o dziwo nie tylko kiedyś, a z dwa lata temu 😀 Nie z wyboru 😉 Zresztą z SVN’a korzystałam podczas pisania obu prac dyplomowych oraz na studiach (także nie mój wybór). Także mam spore porównanie – i zdecydowanie wolę Git’a 🙂

      P.S. Nie ma sprawy 😉 Wpisy warte polecenia na start 🙂

  • Codingtime.pl – Piotr Wachulec

    Warto dodać, że studenci mogą korzystać z wersji płatnej GitHub przez 2 lata za darmo 🙂 Poza tym bardzo fajny wpis, taka zajaweczka 🙂

    • Natalia Skowronek

      Tego nie wiedziałam! Dzięki! 🙂

      • Codingtime.pl – Piotr Wachulec

        Nie ma za co, polecam się 😀

    • Też racja! Dodane 🙂

      • Codingtime.pl – Piotr Wachulec

        Dzięki! 🙂

  • Całkowicie zgadzam się z tym co napisałaś, jeśli zawodowo chcesz się zajmować programowaniem prędzej czy później trafisz na gita. Teraz praktycznie wszyscy z migrowali/migrują swoje repo na gita.

    • W sumie się nie dziwię 🙂 W porównaniu do SVN i mi wydaje się lepszą opcją 😉

  • Piotr Grono

    Warto też dodać, że są fajne programy do wizualnej obsługi Gita np. SourceTree, polecam 🙂