JEST GIT :)
Agnieszka Zbrzezny
Institute of Mathematics and Computer Science
Jan Długosz University in Cz˛estochowa, Polan...
Dlaczego taka dziwna prezentacja?
Czemu nie błyszczy jak Edward ze „Zmierzchu”?
Z przyzwyczajenia :)
Bo nie umiem wyklikiw...
Co to jest i po co mi to?
System kontroli wersji (ang. version/revision control system) -
oprogramowanie słu˙z ˛ace do ´sl...
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. repozyto...
Bo mo˙zna zwariowa´c!
Katalog roboczy tym si˛e ró˙zni od ka˙zdego innego katalogu,
w którym trzymamy swoje pliki, ˙ze znaj...
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 nie...
Dlaczego?
Daje nam mo˙zliwo´sci niedost˛epne w zwykły sposób nawet dla
najbardziej uwa˙znego i porz ˛adnego u˙zytkownika.
...
Systemy kontroli wersji
scentralizowane - oparte na architekturze klient-serwer
rozproszone - oparte na architekturze P2P
...
Systemy kontroli wersji
CVS - Concurrent Versions System - scentralizowany
SVN - Subversion - scentralizowany
Git - rozpro...
Dlaczego Git? Subiektywnie :)
Bo stworzył go Linus Torvalds – twórca j ˛adra Linux, jako narz˛edzie
wspomagaj ˛ace rozwój ...
Dlaczego Git? Obiektywnie :)
Jest oprogramowaniem open source na licencji GNU GPL.
Wiele du˙zych projektów korzysta z GITa...
Dlaczego Git a nie SVN?
W pierwszej kolejno´sci trzeba powiedzie´c, ˙ze Git jest systemem
rozproszonym.
Wynika z tego pier...
Trzy mo˙zliwo´sci
Schemat scentralizowany
Oczywi´scie jest mo˙zliwe u˙zywanie Git’a w sposób do którego
przywykli´smy u˙zy...
Trzy mo˙zliwo´sci
Manager integracji
Ka˙zdy umieszcza zmiany w swoim publicznym repozytorium, po
czym wyznaczony „manager ...
Trzy mo˙zliwo´sci
Dictator and Lieutenants Workflow
Bardzo interesuj ˛ace rozwi ˛azanie gdzie tworzony jest ła´ncuch
odpowi...
Fakty
Na Windows, Linux, Mac OS X
Napisany w C, Bourne Shell i Perl ( taki j˛ezyk co powstał przez
rzucenie kota na klawia...
Jak to ugry´z´c?
Instalacja
Windows:
Pobieramy instalator z http://msysgit.github.io/
Po instalacji ”Dalej“ mamy i konsol˛...
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 powinn...
Konfiguracja
Zacznijmy od wygenerowania kluczy, aby to zrobi´c wpisujemy
w konsoli:
ssh-keygen -t rsa -C "your_email@yourem...
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 nie...
Do roboty!
Tworzenie repozytorium
Katalog w którym chcemy utworzy´c repozytorium musi by´c pusty!
Agnieszka Zbrzezny (IMI ...
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 r...
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.
A...
Gał˛ezie
Alternatywne rzeczywisto´sci
Wykonujesz prac˛e nad stron ˛a internetow ˛a.
Tworzysz gał ˛a´z dla nowej funkcji, n...
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...
Nie kłó´cmy si˛e!
Ł ˛aczenie gał˛ezi i rozwi ˛azywanie konfliktów
Dodajmy nowy plik do aktywnej gał˛ezi i zróbmy commit.
Te...
Nie kłó´cmy si˛e!
Naszym celem jest teraz zaktualizowanie gał˛ezi „master” ł ˛acz ˛ac jej
zawarto´s´c ze zmianami wprowadz...
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
kon...
Nie kłó´cmy si˛e!
Po czym zobaczymy okienko do rozwi ˛azywania konfliktów:
Agnieszka Zbrzezny (IMI AJD) Cz˛estochowa 2014 3...
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.t...
of 37

Jest Git!

Published on: Mar 4, 2016
Published in: Technology      
Source: www.slideshare.net


Transcripts - 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

Related Documents