Git -- rozproszony system kontroli wersji

Click here to load reader

  • date post

    10-May-2015
  • Category

    Documents

  • view

    1.707
  • download

    1

Embed Size (px)

description

Prezentacja przedstawiona na konferencji Pingwinaria 2010.

Transcript of Git -- rozproszony system kontroli wersji

  • 1.Rozproszony systemkontroli wersjiGITPiotr Macuk

2. O mnie Programowanie 19 lat Linux + vim 12 lat Kontrola wersji9 lat Ruby (on Rails)5 lat Git2 lata 3. AgendaCzym jest git Instalacja i konfiguracja Budowa Narzdzia Wsppraca Pytania 4. Historia 2002-2005 BitKeeper 6 kwietnia 2005 zmiana licencji Linus daje sobie 2 tygodnie 18 kwietnia 2005 git obsuguje swj kod 16 czerwca 2005 git obsuguje kod jdra Opiekun projektu: Junio Hamano 14 lutego 2007 wydano git 1.5.0 5. Zaoenia Nieliniowy rozwj kodu Rozproszenie pracy Szybko i stabilno dziaania Integralno repozytorium Obsuga bardzo duej iloci plikw 6. Czym jest git? Stupid content tracker Ciekawy system plikw Filozofia UNIX-a wiele prostych narzdzi Git != svn++ 7. Instalacja i konfiguracja $sudoaptgetinstallgitcore$gitconfigglobaluser.name "PiotrMacuk" $gitconfigglobaluser.email piotr@macuk.pl/etc/gitconfig ~/.gitconfig .git/config githelpconfig 8. Nowy projekt$mkdirppesel/src $touchpesel/README $touchpesel/src/pesel.rbpesel pesel/README pesel/src pesel/src/pesel.rb 9. Utworzenie repozytorium $gitinitpesel pesel/README pesel/src pesel/src/pesel.rb pesel/.git 10. Ignore$cat.gitignore*.log *.pid [09].txt#production.logjestok !production.log 11. Status$gitstatus#Onbranchmaster #Untrackedfiles: #README #src/ nothingaddedtocommitbut untrackedfilespresent(use"git add"totrack) 12. Nowe pliki$gitadd. $gitstatus#Onbranchmaster #Changestobecommitted: #newfile:README #newfile:src/pesel.rb 13. Commit $gitcommitm'Init'[master(rootcommit)7b355ec]Init 0fileschanged,0insertions(+),0 deletions() createmode100644README createmode100644src/pesel.rb$gitstatus#Onbranchmaster nothingtocommit(workingdirectoryclean) 14. Perspektywa Katalog roboczyIndeksRepozytorium pesel pesel/.git/indexpesel/.gitAddCommitCommit -aCheckout 15. Baza obiektw $cd.git/objects&&finde6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 29/206d2658aaf11920998fac41a9f5f7047418fb 4b/b2a6cec1e0c51741998cd243367706bbfb3b83 7b/355ecc8206060071ff60038fa034aab580dd59 16. Zmiana pliku$echo'Pesellibrary.'>README $gitaddREADME $gitcommitm'Doc' 17. Baza obiektw$cd.git/objects&&finde6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 29/206d2658aaf11920998fac41a9f5f7047418fb 4b/b2a6cec1e0c51741998cd243367706bbfb3b83 7b/355ecc8206060071ff60038fa034aab580dd59 d3/db0ebf6844ddc3ef19920e753bdf66f332a565 50/947a5824bab56cf14775c6594745f5b4409f2f 6a/aa7ae7ded1c036bc433a49906733a81da6fc9e 18. SHA-1 Init Docpeseltree4bb2a6c6aaa7ae pesel/README blobe69de2950947a5 pesel/srctree29206d229206d2 pesel/src/pesel.rb blobe69de29e69de29 19. Skierowany graf acyklicznyInit Doccommit commit 7b355ecd3db0ebtree tree peselpesel 4bb2a6c6aaa7ae blobtreeblobe69de29 29206d2 50947a5 READMEsrcREADME src/pesel.rb 20. Typy obiektwblobblob(size)0treetree(size)0 e69de29 4bb2a6c content100644blobe69de29README040000tree29206d2src committag d3db0eb e795501Commit(size)0 tag(size)0tree6aaa7aeobjectd3db0eb parent7b355ectypecommit authorPiotrMacuk tagv0.0.1taggerPiotrMacuk1271161942+0200 committerPiotrMacuk TueApr1317:24:4020101271161942+0200 Firsttag.Doc 21. Obiekty zaoenia Objekty s niezmienne Obiekty s tylko dodawane Ten sam sposb przechowywaniaobj=zlib(sha1(header+content)) obj=>.git/objects/ 22. GazieHEAD$gitbranchfix23$gitcheckoutfix23 master fix23F D$gitcheckoutbfix23E C$gitbranchdfix23BA 23. Gazie Nowy pomys lub bug = nowa ga Ga = wskanik na commit Tworzenie gazi = zapis 40 bajtw do pliku HEAD = ga w ktrej jest katalog roboczy 24. Tagi $gittagv0.0.1 $gittagav1.0 $gittagsv1.0signed $gittagl 25. Wskaniki $cd.git/refs/&&findHEAD master fix23 tags/v0.0.1 heads/master F D heads/fix23E Ctag:v0.0.1 BA 26. Merge $gitmergefix23HEAD $gitbranchdfix23 master HEAD Gmaster fix23 F DFD E CEC BB AA 27. Rebase + merge HEAD HEAD $gitcheckoutfix23 master fix23 $gitrebasemaster D2 D2 HEADC2 C2master fix23 master F DFF E CE$gitcheckoutmaster E$gitmergefix23$gitbranchdfix23BBB AAA 28. Historia log $gitlogcommitd3db0ebf6844ddc3ef19920e753bdf66f332a565 Author:PiotrMacuk Date:TueApr1314:43:392010+0200Doccommit7b355ecc8206060071ff60038fa034aab580dd59 Author:PiotrMacuk Date:TueApr1314:32:222010+0200Init 29. Historia log $gitlog $gitlogp $gitlogfile1file2dir3 $gitlogtag..branch $gitlogHEAD~10.. $gitlog10 $gitlogauthor=fred $gitloggrep="sometext" $gitlogS"somecode" 30. Historia show $gitshowcommitd3db0ebf6844ddc3ef19920e753bdf66f332a565 Author:PiotrMacuk Date:TueApr1314:43:392010+0200Dokumentacjadiffgita/READMEb/README indexe69de29..50947a5100644 a/README +++b/README @@0,0+1@@ +Pesellibrary. 31. Rnice Katalog roboczyIndeksRepozytoriumpeselpesel/.git/indexpesel/.git gitdiff gitdiffHEADgitdiffcached 32. Undo$gitcommitamend $gitresetsoft $gitresethard#UWAGA 33. Adresowanied3db0ebf6844ddc3ef19920e753bdf66f332a565 d3db0eb HEAD, master, fix23, v0.0.1 master@{1 week ago}, fix23@{yesterday} master~5, fix23^2, d3db0eb~2 '':/opis'' d3db0eb..7b355ec 34. Protokoy git ssh (+ gitshell) http/https File rsync http://github.com 35. Wsppraca Kade repozytorium jest samowystarczalne Tworzymy sie repozytoriw Publiczne i prywatne Gwne repozytorium to tylko umowa $gitcloneurldir $gitremoteaddjanekurl $gitpull(lubgitfetch) $gitpush 36. Lokalnie privateprivatejan olajan$gitremoteaddolafile://home/ola/pesel ola$gitremoteaddjanfile://home/jan/pesel$gitpull#bezpush!ola$gitbrancha *master remotes/jan/master 37. Wspdzieleniesharedprivate privateprivate private $gitclonebarepeselpesel.git $scprpesel.gitserver:~/ $gitremoteaddsharedserver:~/pesel.git 38. Open sourcepublicpublicpublicpublic main private private private OpiekunDeveloper Developer 39. aty Wsppraca na zasadzie wysyania at $gitformatpatchmaster~3 $gitapply*.patch $gitadd $gitcommit 40. Wiele narzdzi git grep git blame git cherry-pickgit bisect git revert git fsck git archivegit gc git stashgit prune 41. Narzdzia zewntrznegitk (tcl/tk) tig (console) qgit (Qt) TortoiseGit (Windows) GitX (Mac OS X) git svn (import, proxy) 42. Linki http://git-scm.com http://whygitisbetterthanx.com 43. Pytania? 44. Dzikuj za uwag :) Piotr Macuk