Slide 1

Slide 1 text

GIT - podstawy Autor: Rafał Łasocha http://swistak35.com Twitter: @swistak35

Slide 2

Slide 2 text

VCS ● Version control system – system kontroli wersji ● Scentralizowane (cvs, svn) ● Zdecentralizowane (mercurial, git)

Slide 3

Slide 3 text

Zalety korzystania z VCS ● Back-up ● Możliwość programowania w grupie ● Dostęp do wszystkich zmian i wersji projektu pod ręką ● Kontrola nad tym, co się dzieje w projekcie i kto jest za co odpowiedzialny ● Pozbycie się śmieciowych komentarzy w kodzie

Slide 4

Slide 4 text

Git - historia ● Autor: Linus Torvalds ● Wziąć przykład z CVS, czego nie robić. ● System powinien być rozproszony. ● System powinien być chroniony przed błędami w repozytorium ● System powinien być szybki.

Slide 5

Slide 5 text

Git - zalety ● Nie potrzebuje połączenia z internetem, aby zatwierdzić zmiany ● Szybki, a jednocześnie ma olbrzymi zasób narzędzi ● Bardzo dobre rozwiązywanie konfliktów ● Łatwy w użyciu i przy tworzeniu nowych repozytoriów ● Social coding - github

Slide 6

Slide 6 text

Git – wady ● Windows ●

Slide 7

Slide 7 text

Początki pracy z gitem ● Stworzenie repozytorium ● Dodanie innego klienta gita (np. serwera) tzw. 'remote'

Slide 8

Slide 8 text

„Stany” plików w repozytorium ● Modyfikacja pliku ● Dodanie go do 'obserwowanych' przez git ● Staging – dodanie pliku do aktualnie „przygotowywanego” commitu ● Commit – zatwierdzenie zmian w plikach ● Push – wysłanie plików na serwer (nieobowiązkowe)

Slide 9

Slide 9 text

Praca z gałęziami 1.Dostajemy zadanie 2.Tworzymy branch (gałąź) specjalnie dla tego zadania 3.Projektujemy i implementujemy 4.Łączymy aktualny gałąź z gałęzią główną 5.Usuwamy gałąź

Slide 10

Slide 10 text

Podstawowe polecenia ● Git init . (tworzy repozytorium gita w aktualnym katalogu) ● Git add file (dodaje plik do najbliższego commita, tzw. staging area) ● Git commit (finalizuje zmianę) ● Git push origin master (wysyła gałąź master na główny serwer gita)

Slide 11

Slide 11 text

● Git pull origin master (pobiera dane) ● Git merge master (scala gałęzie) ● Git branch testing (tworzy gałąź) ● Git checkout testing (zmienia gałąź) ● Git branch -d testing (usuwa gałąź) ● Git clone http://... (kopiuje repozytorium na nasz dysk)

Slide 12

Slide 12 text

Przykładowy workflow ● Mkdir my_project ● Cd my_project ● Touch plik1.rb plik2.rb readme changelog ● … // robimy jakieś zmiany w plikach ● Git add . ● Git commit -m 'pierwszy' ● Git push origin master

Slide 13

Slide 13 text

● Git branch iss001 ● Git checkout iss001 ● Echo „zmiany” >> plik2 ● Git add plik2 ● Git merge master ● Git checkout master ● Git branch -d iss001

Slide 14

Slide 14 text

Pomocne polecenia ● Git revert (cofa do określonego commita) ● Git commit –amend (dopisuje aktualne zmiany do poprzedniego commita) ● Git reset HEAD file (unstaging) ● Git checkout - - file (usunięcie aktualnych zmian, cofnięcie do ostatnio commitowanej wersji)

Slide 15

Slide 15 text

● Git log (logi poprzednich commitów) ● Git status (aktualny status commita, pliki 'staging', pliki które są zmienione, etc.) ● Git diff (porównywanie plików)

Slide 16

Slide 16 text

Hooks ● Post-commit, post-update, post-receive, pre-..., etc. ● Hooki pozwalają na wykonywanie skryptów po określonych akcjach w repozytorium, np. restart serwera, itp.

Slide 17

Slide 17 text

Github ● Social coding ● Issue tracking, wiki ● Wsparcie i komunikacja z innymi systemami dla deweloperów (Redmine, Campfire, powiadomienia) ● Darmowy (po części)

Slide 18

Slide 18 text

Bitbucket ● Mniej popularny ● Prywatne repozytoria za darmo ● Obsługa zarówno gita, jak i mercuriala

Slide 19

Slide 19 text

Pytania? http://swistak35.com @swistak35 on twitter/github/blip