SlideShare a Scribd company logo
JEST GIT :)
Agnieszka Zbrzezny
Institute of Mathematics and Computer Science
Jan Długosz University in Cz˛estochowa, Poland
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 1 / 37
Dlaczego taka dziwna prezentacja?
Czemu nie błyszczy jak Edward ze „Zmierzchu”?
Z przyzwyczajenia :)
Bo nie umiem wyklikiwa´c ładnych prezentacji :)
Bo Latex jest prawie jak programowanie :)
http://www.latex-project.org/
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 2 / 37
Co to jest i po co mi to?
System kontroli wersji (ang. version/revision control system) -
oprogramowanie słu˙z ˛ace do ´sledzenia zmian głównie, ale nie tylko,
w kodzie ´zródłowym oraz pomocy programistom w ł ˛aczeniu zmian
dokonanych w plikach przez wiele osób w ró˙znych momentach
czasowych.
A po ludzku???
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 3 / 37
Bo mo˙zna zwariowa´c!
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 4 / 37
Bo mo˙zna zwariowa´c!
Gdzie´s na dysku komputera lokalnego albo serwera znajduje si˛e
specjalna baza danych, tzw. repozytorium.
W niej znajduj ˛a si˛e nasze projekty wraz z histori ˛a zmian w nich
dokonanych.
My natomiast, ju˙z na naszym lokalnym dysku (to mo˙ze by´c te˙z ten
sam dysk, na który jest repozytorium), mamy swój katalog
roboczy, który jest odzwierciedleniem cz˛e´sci czy cało´sci
zawarto´sci repozytorium.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 5 / 37
Bo mo˙zna zwariowa´c!
Katalog roboczy tym si˛e ró˙zni od ka˙zdego innego katalogu,
w którym trzymamy swoje pliki, ˙ze znajduje si˛e w nim ukryte
foldery zawieraj ˛ace dane niezb˛edne systemowi do ´sledzenia
dokonywanych zmian.
Cała zabawa polega na tym, aby cyklicznie uaktualnia´c dane
przechowywane w repozytorium - dzi˛eki temu b˛edzie powstawa´c
w nim cała historia zmian dokonywanych na plikach w naszym
folderze roboczym.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 6 / 37
Dlaczego?
Mo˙zemy obejrze´c histori˛e zmian projektu (zobaczy´c który „m ˛adry”
co´s nam zepsuł).
Mo˙zemy „wyłuska´c z niego” dowoln ˛a wcze´sniejsz ˛a wersj˛e
interesuj ˛acego nas pliku.
Mo˙zemy skasowa´c cały katalog roboczy i odtworzy´c go
w naj´swie˙zszym, czy dowolnym innym stanie.
Mo˙zemy tak˙ze dzieli´c si˛e prac ˛a z innymi i dzi˛eki po´srednictwu
wspólnego repozytorium przekazywa´c sobie wzajemnie prac˛e
i uaktualnia´c nasze foldery robocze, aby zawierały zmiany
dokonywane przez innych.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 7 / 37
Dlaczego?
Daje nam mo˙zliwo´sci niedost˛epne w zwykły sposób nawet dla
najbardziej uwa˙znego i porz ˛adnego u˙zytkownika.
Umieszczenie repozytorium na osobnym dysku czy serwerze
zwi˛eksza tak˙ze bezpiecze´nstwo naszych danych.
Mechanizmy kontroli wersji ułatwiaj ˛a tworzenie kopii
bezpiecze´nstwa, przygotowywanie pakietów do dystrybucji czy
tworzenie kopii przyrostowych, które zawieraj ˛a jednie zmienione
pliki.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 8 / 37
Systemy kontroli wersji
scentralizowane - oparte na architekturze klient-serwer
rozproszone - oparte na architekturze P2P
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 9 / 37
Systemy kontroli wersji
CVS - Concurrent Versions System - scentralizowany
SVN - Subversion - scentralizowany
Git - rozproszony
i wiele innych.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 10 / 37
Dlaczego Git? Subiektywnie :)
Bo stworzył go Linus Torvalds – twórca j ˛adra Linux, jako narz˛edzie
wspomagaj ˛ace rozwój j ˛adra systemu operacyjnego Linux, wi˛ec
musi by´c super :)
Software is like sex; it’s better when it’s free.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 11 / 37
Dlaczego Git? Obiektywnie :)
Jest oprogramowaniem open source na licencji GNU GPL.
Wiele du˙zych projektów korzysta z GITa jako systemu kontroli
wersji:
Android
Digg
GIMP
jQuery
Linux
phpMyAdmin
Symfony.
Dzi˛eki prostym algorytmom scalania jest szybszy ni˙z inne.
Wszyscy si˛e na niego przesiadaj ˛a.
Jest to system rozproszony.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 12 / 37
Dlaczego Git a nie SVN?
W pierwszej kolejno´sci trzeba powiedzie´c, ˙ze Git jest systemem
rozproszonym.
Wynika z tego pierwsza wielka zaleta tego systemu – mo˙ze on
pracowa´c offline – bez poł ˛aczenia z głównym repozytorium.
Umo˙zliwia to nam przegl ˛adanie historii i lokalne commit’owanie
zmian!
Jest to niezwykle przydatne gdy chcemy pracowa´c bez dost˛epu do
sieci lub gdy chcemy zapisywa´c wyniki naszej pracy, ale jeszcze
nie jeste´smy gotowi, ˙zeby umie´sci´c je w głównym repozytorium.
Praca offline owocuje tak˙ze bardzo szybkim działaniem systemu.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 13 / 37
Trzy mo˙zliwo´sci
Schemat scentralizowany
Oczywi´scie jest mo˙zliwe u˙zywanie Git’a w sposób do którego
przywykli´smy u˙zywaj ˛ac SVN’a, czyli ze scentralizowanym
repozytorium, do którego wszyscy maj ˛a prawo zapisywa´c zmiany.
Ale to jest nudne...
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 14 / 37
Trzy mo˙zliwo´sci
Manager integracji
Ka˙zdy umieszcza zmiany w swoim publicznym repozytorium, po
czym wyznaczony „manager integracji” wybiera po˙z ˛adane zmiany
i integruje je w głównym repozytorium projektu.
U˙zytkownicy powinni od´swie˙zy´c swoje kopie lokalne z głównego
repozytorium projektu.
Daje nam to ju˙z jaki´s obraz mo˙zliwo´sci jakie niesie ze sob ˛a praca
z Git’em, ale najlepsze wła´snie przed nami.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 15 / 37
Trzy mo˙zliwo´sci
Dictator and Lieutenants Workflow
Bardzo interesuj ˛ace rozwi ˛azanie gdzie tworzony jest ła´ncuch
odpowiedzialno´sci w oparciu o który mo˙zna budowa´c struktur˛e
zaufanych ´zródeł.
Pozwala on zorganizowa´c prac˛e w ten sposób, ˙ze u˙zytkownicy
commit’uj ˛a swoj ˛a prac˛e do repozytorium „porucznika” (osoby
wyznaczone do przegl ˛adu i akceptacji kodu) a dopiero oni, jako
osoby bardziej zaufane, mog ˛a commitowa´c kod do głównego
repozytorium projektu, z którego u˙zytkownicy mog ˛a uaktualnia´c
swoje kopie lokalne.
Schemat bardzo u˙zyteczny w bardzo du˙zych projektach lub
w organizacjach o wielowarstwowej strukturze.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 16 / 37
Fakty
Na Windows, Linux, Mac OS X
Napisany w C, Bourne Shell i Perl ( taki j˛ezyk co powstał przez
rzucenie kota na klawiatur˛e)
Pierwsza wersja - 7 kwietnia 2005
Aktualna wersja stabilna - 18 marzec 2014 (1.9.1)
Główne kryteria przy tworzeniu:
Wzi ˛a´c przykład z CVS, czego nie robi´c.
System powinien by´c rozproszony.
System powinien by´c chroniony przed bł˛edami w repozytorium
(przypadkowymi, jak awaria twardego dysku, jak i zło´sliwymi,
wprowadzonymi przez kogo´s).
System powinien by´c szybki.
Pierwsze dwa punkty wyeliminowały wszystko prócz Monotone’a,
a czwarty punkt wyeliminował wszystko, wi˛ec Torvalds postanowił
napisa´c własny system kontroli wersji.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 17 / 37
Jak to ugry´z´c?
Instalacja
Windows:
Pobieramy instalator z http://msysgit.github.io/
Po instalacji ”Dalej“ mamy i konsol˛e i proste GUI
http://nagrodzki.net/2012/instalacja-i-konfiguracja-gita/ - instalacja
krok po kroku
Ubuntu Linux:
sudo apt-get install git
Po instalacji mamy tylko lini˛e polece´n
Trzeba doinstalowa´c nakładk˛e graficzn ˛a - jedna z wielu: git-cola,
gitg, SmartGit, Giggle, Git Gui, qGit...
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 18 / 37
Wygl ˛ad na Windows
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 19 / 37
Wygl ˛ad na Ubuntu
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 20 / 37
Ci ˛ag dalszy na Windows, czyli konsola nie tylko na
Linuksie
Wybieramy z listy programów GIT Bash:
Po uruchomieniu powinna pokaza´c si˛e konsola bashowa:
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 21 / 37
Konfiguracja
Zacznijmy od wygenerowania kluczy, aby to zrobi´c wpisujemy
w konsoli:
ssh-keygen -t rsa -C "your_email@youremail.com"
Teraz wpisujemy passphrase, czyli hasło do naszego klucza.
Enter passphrase (empty for no passphrase):
<enter a passphrase>
Enter same passphrase again: <enter passphrase
again>
Teraz musimy zdefiniowa´c globalne dane o u˙zytkowniku wpisuj ˛ac imi˛e
i nazwisko oraz adres email zgodny z tym który został wpisany
podczas generowania klucza.
git config -global user.name "Firstname
Lastname"
git config -global user.email
"your_email@youremail.com"
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 22 / 37
Dobrze ˙zeby było ładnie
Git jest narz˛edziem konsolowym posiadaj ˛acym własn ˛a nakładk˛e
graficzn ˛a. Jest ona do´s´c nieintuicyjna.
Na szcz˛e´scie istnieje dla niej alternatywa, któr ˛a jest TortoiseGIT.
(http://code.google.com/p/tortoisegit/downloads/list)
„˙Zółwik” integruje si˛e z Explorerem w systemie Windows i mamy
dost˛ep do jego opcji z menu kontekstowego dost˛epnego pod PPM
(Prawym Przyciskiem Myszy)
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 23 / 37
Do roboty!
Tworzenie repozytorium
Katalog w którym chcemy utworzy´c repozytorium musi by´c pusty!
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 24 / 37
Do roboty!
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 25 / 37
Do roboty!
Dodawanie nowych plików
Teraz nowy plik oznaczony jest do wersjonowania. Aby go
zwersjonowa´c czyli doda´c do repozytorium zapami˛etuj ˛ac na stałe
dan ˛a wersj˛e nale˙zy:
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 26 / 37
Do roboty!
Lub z menu:
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 27 / 37
Co mi tu namieszali?
Diff
Jedn ˛a z wa˙zniejszych funkcji gita jest porównywanie zmian
w danym pliku pomi˛edzy wersjami.
Aby zobaczy´c zmiany jakie wprowadzili´smy wybieramy z menu
kontekstowego opcj˛e „Diff”:
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 28 / 37
Gał˛ezie
Alternatywne rzeczywisto´sci
Wykonujesz prac˛e nad stron ˛a internetow ˛a.
Tworzysz gał ˛a´z dla nowej funkcji, nad któr ˛a pracujesz.
Wykonujesz jak ˛a´s prac˛e w tej gał˛ezi.
Na tym etapie otrzymujesz telefon, ˙ze inny problem jest obecnie
priorytetem i potrzeba błyskawicznej poprawki.
Oto, co robisz w Git:
Powracasz na gał ˛a´z produkcyjn ˛a.
Tworzysz now ˛a gał ˛a´z, by doda´c tam poprawk˛e.
Po przetestowaniu, scalasz gał ˛a´z z poprawk ˛a i wypchniesz
zmiany na serwer produkcyjny.
Przeł ˛aczasz si˛e na powrót do gał˛ezi z now ˛a funkcj ˛a i kontynuujesz
prac˛e.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 29 / 37
W kupie siła
Aby stworzy´c now ˛a gał ˛a´z wybieramy z menu kontekstowego „Create
branch”:
Aby zmieni´c aktywn ˛a gał ˛a´z na dowoln ˛a inn ˛a któr ˛a mamy stworzon ˛a
w naszej kopii lokalnej wybieramy opcj˛e „Switch/Checkout”.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 30 / 37
Nie kłó´cmy si˛e!
Ł ˛aczenie gał˛ezi i rozwi ˛azywanie konfliktów
Dodajmy nowy plik do aktywnej gał˛ezi i zróbmy commit.
Teraz mamy dwie odr˛ebne gał˛ezie w repozytorium ró˙zni ˛ace si˛e
zawarto´sci ˛a.
Aby sprawdzi´c to naocznie przeł ˛aczmy si˛e do gał˛ezi „master” za
pomoc ˛a opcji z menu kontekstowego „switch/checkout”.
Teraz dostajemy zawału serca: „Co´s poszło nie tak! Nie ma
mojego pliku!”.
Ten plik jest i nie został usuni˛ety - znajduje si˛e na stworzonej
przez nas gał˛ezi a nie w „master”.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 31 / 37
Nie kłó´cmy si˛e!
Naszym celem jest teraz zaktualizowanie gał˛ezi „master” ł ˛acz ˛ac jej
zawarto´s´c ze zmianami wprowadzonymi w gał˛ezi „user1”. Aby
rozpocz ˛a´c proces wybieramy z menu kontekstowego opcj˛e „merge”:
W oknie dialogowym wybieramy gał ˛a´z z któr ˛a chcemy scali´c aktywn ˛a
gał ˛a´z i zatwierdzamy wybór.
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 32 / 37
Nie kłó´cmy si˛e!
Co zrobi´c gdy wyst ˛api ˛a konflikty?
Klikamy PPM na pliku który powoduje konflikt i wybieramy z menu
kontekstowego „Edit conflicts”:
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 33 / 37
Nie kłó´cmy si˛e!
Po czym zobaczymy okienko do rozwi ˛azywania konfliktów:
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 34 / 37
Podsumowanie
Mam nadziej˛e, ˙ze i dla Was Git b˛edzie git:)
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 35 / 37
Zdrówko!
Dzi˛ekuj˛e za uwag˛e :)
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 36 / 37
Materiały
http://nagrodzki.net/
http://pl.wikipedia.org/
http://git-scm.com/book/ – ´swietna ksi ˛a˙zka o Git
http://www.trzeciakawa.pl/
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 37 / 37

More Related Content

Similar to Jest Git!

PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...
PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...
PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...
PROIDEA
 
Poznaj GITa - część teoretyczna - Anna Szwiec
Poznaj GITa -  część teoretyczna - Anna SzwiecPoznaj GITa -  część teoretyczna - Anna Szwiec
Poznaj GITa - część teoretyczna - Anna Szwiec
Women in Technology Poland
 
Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous Delivery
XSolve
 
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETProgramowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETMikołaj Olszewski
 
Ciągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - WprowadzenieCiągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - Wprowadzenie
Artur Radosz
 
3
33
Instalacja sterowników urządzeń peryferyjnych
 Instalacja sterowników urządzeń peryferyjnych Instalacja sterowników urządzeń peryferyjnych
Instalacja sterowników urządzeń peryferyjnych
Szymon Konkol - Publikacje Cyfrowe
 
Warsztat developera
Warsztat developeraWarsztat developera
Warsztat developera
Maciej Miąsik
 
PyLadies #4
PyLadies #4PyLadies #4
PyLadies #4
Kamil Rykowski
 
GIT
GITGIT
SUSE Linux. Ćwiczenia
SUSE Linux. ĆwiczeniaSUSE Linux. Ćwiczenia
SUSE Linux. Ćwiczenia
Wydawnictwo Helion
 
Badanie ciśnienia systemu - resource monitor
Badanie ciśnienia systemu - resource monitorBadanie ciśnienia systemu - resource monitor
Badanie ciśnienia systemu - resource monitorMarcin Błaszczak
 
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiInfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
JIT Solutions
 
Skok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiSkok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacji
Witold Bołt
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...Infoshare
 
Odzyskiwanie danych po formacie – 3 darmowe i skuteczne sposoby!
Odzyskiwanie danych po formacie – 3 darmowe i skuteczne sposoby!Odzyskiwanie danych po formacie – 3 darmowe i skuteczne sposoby!
Odzyskiwanie danych po formacie – 3 darmowe i skuteczne sposoby!
michalip
 
GlusterFS
GlusterFSGlusterFS
Gluster FS
Gluster FSGluster FS
Gluster FS
3camp
 

Similar to Jest Git! (20)

PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...
PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...
PLNOG 4: Krzysztof Góźdź - Od ssh do batuty - czyli jak z administratora stać...
 
Poznaj GITa - część teoretyczna - Anna Szwiec
Poznaj GITa -  część teoretyczna - Anna SzwiecPoznaj GITa -  część teoretyczna - Anna Szwiec
Poznaj GITa - część teoretyczna - Anna Szwiec
 
Piz07 12
Piz07 12Piz07 12
Piz07 12
 
Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous Delivery
 
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETProgramowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
 
Systemy Operacyjne - Wykład1
Systemy Operacyjne - Wykład1Systemy Operacyjne - Wykład1
Systemy Operacyjne - Wykład1
 
Ciągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - WprowadzenieCiągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - Wprowadzenie
 
3
33
3
 
Instalacja sterowników urządzeń peryferyjnych
 Instalacja sterowników urządzeń peryferyjnych Instalacja sterowników urządzeń peryferyjnych
Instalacja sterowników urządzeń peryferyjnych
 
Warsztat developera
Warsztat developeraWarsztat developera
Warsztat developera
 
PyLadies #4
PyLadies #4PyLadies #4
PyLadies #4
 
GIT
GITGIT
GIT
 
SUSE Linux. Ćwiczenia
SUSE Linux. ĆwiczeniaSUSE Linux. Ćwiczenia
SUSE Linux. Ćwiczenia
 
Badanie ciśnienia systemu - resource monitor
Badanie ciśnienia systemu - resource monitorBadanie ciśnienia systemu - resource monitor
Badanie ciśnienia systemu - resource monitor
 
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiInfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
 
Skok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiSkok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacji
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
 
Odzyskiwanie danych po formacie – 3 darmowe i skuteczne sposoby!
Odzyskiwanie danych po formacie – 3 darmowe i skuteczne sposoby!Odzyskiwanie danych po formacie – 3 darmowe i skuteczne sposoby!
Odzyskiwanie danych po formacie – 3 darmowe i skuteczne sposoby!
 
GlusterFS
GlusterFSGlusterFS
GlusterFS
 
Gluster FS
Gluster FSGluster FS
Gluster FS
 

Jest Git!

  • 1. JEST GIT :) Agnieszka Zbrzezny Institute of Mathematics and Computer Science Jan Długosz University in Cz˛estochowa, Poland Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 1 / 37
  • 2. Dlaczego taka dziwna prezentacja? Czemu nie błyszczy jak Edward ze „Zmierzchu”? Z przyzwyczajenia :) Bo nie umiem wyklikiwa´c ładnych prezentacji :) Bo Latex jest prawie jak programowanie :) http://www.latex-project.org/ Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 2 / 37
  • 3. Co to jest i po co mi to? System kontroli wersji (ang. version/revision control system) - oprogramowanie słu˙z ˛ace do ´sledzenia zmian głównie, ale nie tylko, w kodzie ´zródłowym oraz pomocy programistom w ł ˛aczeniu zmian dokonanych w plikach przez wiele osób w ró˙znych momentach czasowych. A po ludzku??? Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 3 / 37
  • 4. Bo mo˙zna zwariowa´c! Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 4 / 37
  • 5. Bo mo˙zna zwariowa´c! Gdzie´s na dysku komputera lokalnego albo serwera znajduje si˛e specjalna baza danych, tzw. repozytorium. W niej znajduj ˛a si˛e nasze projekty wraz z histori ˛a zmian w nich dokonanych. My natomiast, ju˙z na naszym lokalnym dysku (to mo˙ze by´c te˙z ten sam dysk, na który jest repozytorium), mamy swój katalog roboczy, który jest odzwierciedleniem cz˛e´sci czy cało´sci zawarto´sci repozytorium. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 5 / 37
  • 6. Bo mo˙zna zwariowa´c! Katalog roboczy tym si˛e ró˙zni od ka˙zdego innego katalogu, w którym trzymamy swoje pliki, ˙ze znajduje si˛e w nim ukryte foldery zawieraj ˛ace dane niezb˛edne systemowi do ´sledzenia dokonywanych zmian. Cała zabawa polega na tym, aby cyklicznie uaktualnia´c dane przechowywane w repozytorium - dzi˛eki temu b˛edzie powstawa´c w nim cała historia zmian dokonywanych na plikach w naszym folderze roboczym. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 6 / 37
  • 7. Dlaczego? Mo˙zemy obejrze´c histori˛e zmian projektu (zobaczy´c który „m ˛adry” co´s nam zepsuł). Mo˙zemy „wyłuska´c z niego” dowoln ˛a wcze´sniejsz ˛a wersj˛e interesuj ˛acego nas pliku. Mo˙zemy skasowa´c cały katalog roboczy i odtworzy´c go w naj´swie˙zszym, czy dowolnym innym stanie. Mo˙zemy tak˙ze dzieli´c si˛e prac ˛a z innymi i dzi˛eki po´srednictwu wspólnego repozytorium przekazywa´c sobie wzajemnie prac˛e i uaktualnia´c nasze foldery robocze, aby zawierały zmiany dokonywane przez innych. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 7 / 37
  • 8. Dlaczego? Daje nam mo˙zliwo´sci niedost˛epne w zwykły sposób nawet dla najbardziej uwa˙znego i porz ˛adnego u˙zytkownika. Umieszczenie repozytorium na osobnym dysku czy serwerze zwi˛eksza tak˙ze bezpiecze´nstwo naszych danych. Mechanizmy kontroli wersji ułatwiaj ˛a tworzenie kopii bezpiecze´nstwa, przygotowywanie pakietów do dystrybucji czy tworzenie kopii przyrostowych, które zawieraj ˛a jednie zmienione pliki. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 8 / 37
  • 9. Systemy kontroli wersji scentralizowane - oparte na architekturze klient-serwer rozproszone - oparte na architekturze P2P Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 9 / 37
  • 10. Systemy kontroli wersji CVS - Concurrent Versions System - scentralizowany SVN - Subversion - scentralizowany Git - rozproszony i wiele innych. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 10 / 37
  • 11. Dlaczego Git? Subiektywnie :) Bo stworzył go Linus Torvalds – twórca j ˛adra Linux, jako narz˛edzie wspomagaj ˛ace rozwój j ˛adra systemu operacyjnego Linux, wi˛ec musi by´c super :) Software is like sex; it’s better when it’s free. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 11 / 37
  • 12. Dlaczego Git? Obiektywnie :) Jest oprogramowaniem open source na licencji GNU GPL. Wiele du˙zych projektów korzysta z GITa jako systemu kontroli wersji: Android Digg GIMP jQuery Linux phpMyAdmin Symfony. Dzi˛eki prostym algorytmom scalania jest szybszy ni˙z inne. Wszyscy si˛e na niego przesiadaj ˛a. Jest to system rozproszony. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 12 / 37
  • 13. Dlaczego Git a nie SVN? W pierwszej kolejno´sci trzeba powiedzie´c, ˙ze Git jest systemem rozproszonym. Wynika z tego pierwsza wielka zaleta tego systemu – mo˙ze on pracowa´c offline – bez poł ˛aczenia z głównym repozytorium. Umo˙zliwia to nam przegl ˛adanie historii i lokalne commit’owanie zmian! Jest to niezwykle przydatne gdy chcemy pracowa´c bez dost˛epu do sieci lub gdy chcemy zapisywa´c wyniki naszej pracy, ale jeszcze nie jeste´smy gotowi, ˙zeby umie´sci´c je w głównym repozytorium. Praca offline owocuje tak˙ze bardzo szybkim działaniem systemu. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 13 / 37
  • 14. Trzy mo˙zliwo´sci Schemat scentralizowany Oczywi´scie jest mo˙zliwe u˙zywanie Git’a w sposób do którego przywykli´smy u˙zywaj ˛ac SVN’a, czyli ze scentralizowanym repozytorium, do którego wszyscy maj ˛a prawo zapisywa´c zmiany. Ale to jest nudne... Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 14 / 37
  • 15. Trzy mo˙zliwo´sci Manager integracji Ka˙zdy umieszcza zmiany w swoim publicznym repozytorium, po czym wyznaczony „manager integracji” wybiera po˙z ˛adane zmiany i integruje je w głównym repozytorium projektu. U˙zytkownicy powinni od´swie˙zy´c swoje kopie lokalne z głównego repozytorium projektu. Daje nam to ju˙z jaki´s obraz mo˙zliwo´sci jakie niesie ze sob ˛a praca z Git’em, ale najlepsze wła´snie przed nami. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 15 / 37
  • 16. Trzy mo˙zliwo´sci Dictator and Lieutenants Workflow Bardzo interesuj ˛ace rozwi ˛azanie gdzie tworzony jest ła´ncuch odpowiedzialno´sci w oparciu o który mo˙zna budowa´c struktur˛e zaufanych ´zródeł. Pozwala on zorganizowa´c prac˛e w ten sposób, ˙ze u˙zytkownicy commit’uj ˛a swoj ˛a prac˛e do repozytorium „porucznika” (osoby wyznaczone do przegl ˛adu i akceptacji kodu) a dopiero oni, jako osoby bardziej zaufane, mog ˛a commitowa´c kod do głównego repozytorium projektu, z którego u˙zytkownicy mog ˛a uaktualnia´c swoje kopie lokalne. Schemat bardzo u˙zyteczny w bardzo du˙zych projektach lub w organizacjach o wielowarstwowej strukturze. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 16 / 37
  • 17. Fakty Na Windows, Linux, Mac OS X Napisany w C, Bourne Shell i Perl ( taki j˛ezyk co powstał przez rzucenie kota na klawiatur˛e) Pierwsza wersja - 7 kwietnia 2005 Aktualna wersja stabilna - 18 marzec 2014 (1.9.1) Główne kryteria przy tworzeniu: Wzi ˛a´c przykład z CVS, czego nie robi´c. System powinien by´c rozproszony. System powinien by´c chroniony przed bł˛edami w repozytorium (przypadkowymi, jak awaria twardego dysku, jak i zło´sliwymi, wprowadzonymi przez kogo´s). System powinien by´c szybki. Pierwsze dwa punkty wyeliminowały wszystko prócz Monotone’a, a czwarty punkt wyeliminował wszystko, wi˛ec Torvalds postanowił napisa´c własny system kontroli wersji. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 17 / 37
  • 18. Jak to ugry´z´c? Instalacja Windows: Pobieramy instalator z http://msysgit.github.io/ Po instalacji ”Dalej“ mamy i konsol˛e i proste GUI http://nagrodzki.net/2012/instalacja-i-konfiguracja-gita/ - instalacja krok po kroku Ubuntu Linux: sudo apt-get install git Po instalacji mamy tylko lini˛e polece´n Trzeba doinstalowa´c nakładk˛e graficzn ˛a - jedna z wielu: git-cola, gitg, SmartGit, Giggle, Git Gui, qGit... Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 18 / 37
  • 19. Wygl ˛ad na Windows Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 19 / 37
  • 20. Wygl ˛ad na Ubuntu Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 20 / 37
  • 21. Ci ˛ag dalszy na Windows, czyli konsola nie tylko na Linuksie Wybieramy z listy programów GIT Bash: Po uruchomieniu powinna pokaza´c si˛e konsola bashowa: Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 21 / 37
  • 22. Konfiguracja Zacznijmy od wygenerowania kluczy, aby to zrobi´c wpisujemy w konsoli: ssh-keygen -t rsa -C "your_email@youremail.com" Teraz wpisujemy passphrase, czyli hasło do naszego klucza. Enter passphrase (empty for no passphrase): <enter a passphrase> Enter same passphrase again: <enter passphrase again> Teraz musimy zdefiniowa´c globalne dane o u˙zytkowniku wpisuj ˛ac imi˛e i nazwisko oraz adres email zgodny z tym który został wpisany podczas generowania klucza. git config -global user.name "Firstname Lastname" git config -global user.email "your_email@youremail.com" Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 22 / 37
  • 23. Dobrze ˙zeby było ładnie Git jest narz˛edziem konsolowym posiadaj ˛acym własn ˛a nakładk˛e graficzn ˛a. Jest ona do´s´c nieintuicyjna. Na szcz˛e´scie istnieje dla niej alternatywa, któr ˛a jest TortoiseGIT. (http://code.google.com/p/tortoisegit/downloads/list) „˙Zółwik” integruje si˛e z Explorerem w systemie Windows i mamy dost˛ep do jego opcji z menu kontekstowego dost˛epnego pod PPM (Prawym Przyciskiem Myszy) Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 23 / 37
  • 24. Do roboty! Tworzenie repozytorium Katalog w którym chcemy utworzy´c repozytorium musi by´c pusty! Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 24 / 37
  • 25. Do roboty! Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 25 / 37
  • 26. Do roboty! Dodawanie nowych plików Teraz nowy plik oznaczony jest do wersjonowania. Aby go zwersjonowa´c czyli doda´c do repozytorium zapami˛etuj ˛ac na stałe dan ˛a wersj˛e nale˙zy: Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 26 / 37
  • 27. Do roboty! Lub z menu: Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 27 / 37
  • 28. Co mi tu namieszali? Diff Jedn ˛a z wa˙zniejszych funkcji gita jest porównywanie zmian w danym pliku pomi˛edzy wersjami. Aby zobaczy´c zmiany jakie wprowadzili´smy wybieramy z menu kontekstowego opcj˛e „Diff”: Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 28 / 37
  • 29. Gał˛ezie Alternatywne rzeczywisto´sci Wykonujesz prac˛e nad stron ˛a internetow ˛a. Tworzysz gał ˛a´z dla nowej funkcji, nad któr ˛a pracujesz. Wykonujesz jak ˛a´s prac˛e w tej gał˛ezi. Na tym etapie otrzymujesz telefon, ˙ze inny problem jest obecnie priorytetem i potrzeba błyskawicznej poprawki. Oto, co robisz w Git: Powracasz na gał ˛a´z produkcyjn ˛a. Tworzysz now ˛a gał ˛a´z, by doda´c tam poprawk˛e. Po przetestowaniu, scalasz gał ˛a´z z poprawk ˛a i wypchniesz zmiany na serwer produkcyjny. Przeł ˛aczasz si˛e na powrót do gał˛ezi z now ˛a funkcj ˛a i kontynuujesz prac˛e. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 29 / 37
  • 30. W kupie siła Aby stworzy´c now ˛a gał ˛a´z wybieramy z menu kontekstowego „Create branch”: Aby zmieni´c aktywn ˛a gał ˛a´z na dowoln ˛a inn ˛a któr ˛a mamy stworzon ˛a w naszej kopii lokalnej wybieramy opcj˛e „Switch/Checkout”. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 30 / 37
  • 31. Nie kłó´cmy si˛e! Ł ˛aczenie gał˛ezi i rozwi ˛azywanie konfliktów Dodajmy nowy plik do aktywnej gał˛ezi i zróbmy commit. Teraz mamy dwie odr˛ebne gał˛ezie w repozytorium ró˙zni ˛ace si˛e zawarto´sci ˛a. Aby sprawdzi´c to naocznie przeł ˛aczmy si˛e do gał˛ezi „master” za pomoc ˛a opcji z menu kontekstowego „switch/checkout”. Teraz dostajemy zawału serca: „Co´s poszło nie tak! Nie ma mojego pliku!”. Ten plik jest i nie został usuni˛ety - znajduje si˛e na stworzonej przez nas gał˛ezi a nie w „master”. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 31 / 37
  • 32. Nie kłó´cmy si˛e! Naszym celem jest teraz zaktualizowanie gał˛ezi „master” ł ˛acz ˛ac jej zawarto´s´c ze zmianami wprowadzonymi w gał˛ezi „user1”. Aby rozpocz ˛a´c proces wybieramy z menu kontekstowego opcj˛e „merge”: W oknie dialogowym wybieramy gał ˛a´z z któr ˛a chcemy scali´c aktywn ˛a gał ˛a´z i zatwierdzamy wybór. Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 32 / 37
  • 33. Nie kłó´cmy si˛e! Co zrobi´c gdy wyst ˛api ˛a konflikty? Klikamy PPM na pliku który powoduje konflikt i wybieramy z menu kontekstowego „Edit conflicts”: Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 33 / 37
  • 34. Nie kłó´cmy si˛e! Po czym zobaczymy okienko do rozwi ˛azywania konfliktów: Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 34 / 37
  • 35. Podsumowanie Mam nadziej˛e, ˙ze i dla Was Git b˛edzie git:) Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 35 / 37
  • 36. Zdrówko! Dzi˛ekuj˛e za uwag˛e :) Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 36 / 37
  • 37. Materiały http://nagrodzki.net/ http://pl.wikipedia.org/ http://git-scm.com/book/ – ´swietna ksi ˛a˙zka o Git http://www.trzeciakawa.pl/ Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 37 / 37