Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Git
Svätý Grál kolektívnej práce
Čo je to Git?
https://git-scm.com
Definícia
Git nie je GitHub!
Git je DVCS - Distributed Version Control System
Klienti si nesťahujú iba posledné zmeny, ale...
3 hlavné stavy
committed, modified, staged
Committed znamená, že data sú bezpečne uložené v tvojej lokálnej
databáze.
Modi...
ČojetoGit?
The Git directory is where Git stores the metadata and object database for your project. This is the most
important part o...
Nastavenie Git-u
Základy
3 úrovne nastavení:
1. systémová
2. globálna
3. lokálna
Pre zmenu nastavenia sa používa nástroj “gitconfig”
systém...
git config
git config --global user.name “Moje Meno”
git config --global user.email moj@email.sk
git config --global core....
NastavenieGit-u
Práca s Git-om
Získanie repozitára
Využívame 2 základné prístupy
1. Založenie nového repozitára v existujúcom priečinku
2. Naklonovanie v...
git init
cd ~/project_directory
git init
Založenie nového repozitára v existujúcom priečinku
PrácasGit-om
git clone
git clone https://bitbucket.org/semisedlak/test
git clone https://bitbucket.org/semisedlak/test project_dir
Nakl...
Získavanie informácií
git status
git log -2
git diff
git diff --staged
git diff --cached
PrácasGit-om
git diff --cached
PrácasGit-om
Git remotes
Remotes?
Remotes - vzdialené repozitáre sú verzie projektu hosťované niekde v
sieti alebo na internete.
Je možné ich mať p...
git remote
git remote
git remote add {shortname} {url}
git remote rename {old_shortname} {new_shortname}
git remote rm {sh...
git fetch
git fetch {remote-name}
Príkaz stiahne všetky dáta zo vzdialeného repozitára, ktoré ešte nie sú
stiahnuté. Po to...
Práca so súbormi
Životný cyklus súborov
repozitára
Prácasosúbormi
git add
git add {file}
git add .
Prácasosúbormi
git commit
git commit
git commit -m “…”
git commit -a -m “…”
git commit --ammend
Prácasosúbormi
git mv
git mv {old_file} {new_file}
Prácasosúbormi
git rm
git rm {file}
git rm --cached {file}
Prácasosúbormi
git checkout
git checkout -- {file}
git checkout {branch}
Prácasosúbormi
git push
git push {remote} {branch}
Prácasosúbormi
git pull
git pull
git pull {remote}
git pull {remote} {branch}
Prácasosúbormi
Resetovanie
S čím git pracuje
Pre mentálne poňatie si predstavte Git ako content manager pre tri
rôzne stromy. Pod pojmom “strom” si t...
HEAD
HEAD je ukazovateľ na referenciu aktuálnej vetvy, čo je vlastne
ukazovateľ na posledný commit vytvorený v tejto vetve...
Index
Index návrh tvojho budúceho commitu - teda “Staging Area”.
Resetovanie
Working directory
Predchádzajúce dva stromy ukladajú svoj obsah vo vnútri .git priečinka
efektívym spôsobom. Working Direc...
Workflow
Resetovanie
Predstavte si, že…
…sme súbor zmenili 3x.
Resetovanie
Resetovanie
Resetovanie
Resetovanie
Resetovanie
.gitignore
Na čo slúži?
Slúži na definovanie množiny súborov, ktoré nebudú verzované
Väčšinou pre generované temp a log súbory (napr....
Príklad #1
# ignoruj súbory s názvom Thumbs.db
Thumbs.db
# ignoruj .jpg súbory
*.jpg
# ale sleduj logo.jpg, aj keď .jpg sú...
Príklad #2
# ignoruj včetky priečinky a súbory TEST (aj v podpriečinkoch)
TEST
# ignoruj priečinok IMAGES iba v aktuálnom ...
Príklad #3
# ignoruj doc/notes.txt, ale nie doc/server/arch.txt
doc/*.txt
# ignoruj všetky .pdf súbory v priečinku doc/
do...
Vetvy
Základ
Vetvy
git branch
git branch
git branch -v
git branch --merged
git branch --no-merged
Vetvy
git branch {name}
Vetvy
git branch {name}
Vetvy
git checkout {name}
Vetvy
git checkout {name}
Vetvy
A keď teraz urobím commit?
Vetvy
Po dalšom commite
Vetvy
git checkout master
Vetvy
…a ďalší commit.
Vetvy
…a keď ich chcem spojiť?
Vetvy
git merge {branch}
Vetvy
…a môžem zrušiť túto vetvu.
Vetvy
git branch -d {branch}
Vetvy
CONFLICT!!!
Konflikty
Vidim tam toto
<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">...
Čo urobím?
1. Vymažem čo nepotrebujem, upravim čo potrebujem
2. Uložim subor
3. git add index.html
4. …a commitnem!
Konflik...
Konflikty
Rebase
Rebase?
Môžeš vziať “záplatu” zo zmien, ktoré boli vytvorené v commite C3 a
znova ich aplikovať na commit C4.
Vezmeš zmeny...
Rebasing
Rebasing
git rebase
git checkout iss53
git rebase master
git checkout master
git merge iss53
Stashing
Stash = skrýša
Keď si počas práce na projekte potrebuješ dočasne odložiť
rozpracované veci “bokom”, aby si urobil a commit...
git stash
Uloží všetky rozpracované veci do skrýše.
git stash list
Stashing
git stash apply
Aplikuje zmeny uložené v skrýši
git stash apply stash@{2}
Stashing
git stash drop
Vymaže skrýšu s rozpracovanými zmenami
git stash drop stash@{0}
Stashing
git stash pop
Skratka pre kombináciu dvoch príkazov nasledujúcich po sebe:
git stash apply
git stash drop
git stash branch {name}
Vytvorí z odložených súborov v skrýši novú vetvu
git stash branch test
Stashing
git stash --patch
Git nepridá všetky rozpracované súbor do skrýše, ale interaktívne sa
opýta, ktoré zmeny sa majú odložiť ...
Tagging
#git
#is #awesome #yolo
Všetci vieme čo sú tagy
Git disponuje možnosťou otagovať špecifický bod v histórii zmien, ktorý
je dôležitý.
Najčastejšie ...
git tag
Vypíše zoznam tagov
Je možné v nich aj filtrovať
Tagging
Lightweight
Lightweight tag su niečo ako vetva, ktorá sa ďalej nemení.
V podstate je to checksum konkrétneho commitu ulože...
git tag {name}
Vytvorí lightweight tag s menom {name}
git show {name} = vypíše základné informácie o tagu
Tagging
Annotated
Anotované tagy sú ukladané ako úplné objekty v databáze.
Sú checksumované, obsahujú informáciu o taggerovom mene...
git tag -a {name}
Vytvorí anotovaný tag s menom {name}
git tag -a {name} -m “…”
git show {name} = vypíše všetky informácie...
Zdieľanie tagov
git push origin {tagname}
git push origin --tags
Tagging
Hooks
Aj v gite je háčik
Git má spôsob, ako spustiť špeciálne skripty, keď nastane nejaká
dôležitá udalosť.
Existujú dve skupiny...
Inštalácia
Skript pod špecifickým názvom sa uloží go priečinka:
.git/hooks
Treba pozrieť do docky na názvy hookov
Hooks
Thats all folks!
Diky Broňa…
© 2015 by Miňo
Academy vol.13
Upcoming SlideShare
Loading in …5
×

Academy vol.13

298 views

Published on

Git

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Academy vol.13

  1. 1. Git Svätý Grál kolektívnej práce
  2. 2. Čo je to Git? https://git-scm.com
  3. 3. Definícia Git nie je GitHub! Git je DVCS - Distributed Version Control System Klienti si nesťahujú iba posledné zmeny, ale lokálne disponujú kompletnou verziou repozitára - klonom. Je decentralizovaný ČojetoGit?
  4. 4. 3 hlavné stavy committed, modified, staged Committed znamená, že data sú bezpečne uložené v tvojej lokálnej databáze. Modified znamená, že si zmenil súbor, ale recommittal si ho do svojej databázy. Staged znamená, že si označil zmenený subor v jeho aktuálnej verzii, aby bol zahrnutý v najbližšom commite. ČojetoGit?
  5. 5. ČojetoGit?
  6. 6. The Git directory is where Git stores the metadata and object database for your project. This is the most important part of Git, and it is what is copied when you clone a repository from another computer. The working directory is a single checkout of one version of the project. These files are pulled out of the compressed database in the Git directory and placed on disk for you to use or modify. The staging area is a file, generally contained in your Git directory, that stores information about what will go into your next commit. It’s sometimes referred to as the “index”, but it’s also common to refer to it as the staging area. ČojetoGit?
  7. 7. Nastavenie Git-u
  8. 8. Základy 3 úrovne nastavení: 1. systémová 2. globálna 3. lokálna Pre zmenu nastavenia sa používa nástroj “gitconfig” systémová konfigurácia - /etc/gitconfig globálna konfigurácia - ~/.gitconfig lokálna konfigurácia - .git/config NastavenieGit-u
  9. 9. git config git config --global user.name “Moje Meno” git config --global user.email moj@email.sk git config --global core.editor nano git config --list git config user.email NastavenieGit-u
  10. 10. NastavenieGit-u
  11. 11. Práca s Git-om
  12. 12. Získanie repozitára Využívame 2 základné prístupy 1. Založenie nového repozitára v existujúcom priečinku 2. Naklonovanie vzdialeného repozitára PrácasGit-om
  13. 13. git init cd ~/project_directory git init Založenie nového repozitára v existujúcom priečinku PrácasGit-om
  14. 14. git clone git clone https://bitbucket.org/semisedlak/test git clone https://bitbucket.org/semisedlak/test project_dir Naklonovanie vzdialeného repozitára PrácasGit-om
  15. 15. Získavanie informácií git status git log -2 git diff git diff --staged git diff --cached PrácasGit-om
  16. 16. git diff --cached PrácasGit-om
  17. 17. Git remotes
  18. 18. Remotes? Remotes - vzdialené repozitáre sú verzie projektu hosťované niekde v sieti alebo na internete. Je možné ich mať priradených k projektu viac. Pri naklonovaní repozitára sa automaticky priradí zdroju remote s menom origin - pôvod/počiatok Gitremotes
  19. 19. git remote git remote git remote add {shortname} {url} git remote rename {old_shortname} {new_shortname} git remote rm {shortname} Gitremotes
  20. 20. git fetch git fetch {remote-name} Príkaz stiahne všetky dáta zo vzdialeného repozitára, ktoré ešte nie sú stiahnuté. Po tomto príkaze má programátor referencie na všetky vetvy z daného repozitára, s ktorými môže ďalej pracovať. Gitremotes
  21. 21. Práca so súbormi
  22. 22. Životný cyklus súborov repozitára Prácasosúbormi
  23. 23. git add git add {file} git add . Prácasosúbormi
  24. 24. git commit git commit git commit -m “…” git commit -a -m “…” git commit --ammend Prácasosúbormi
  25. 25. git mv git mv {old_file} {new_file} Prácasosúbormi
  26. 26. git rm git rm {file} git rm --cached {file} Prácasosúbormi
  27. 27. git checkout git checkout -- {file} git checkout {branch} Prácasosúbormi
  28. 28. git push git push {remote} {branch} Prácasosúbormi
  29. 29. git pull git pull git pull {remote} git pull {remote} {branch} Prácasosúbormi
  30. 30. Resetovanie
  31. 31. S čím git pracuje Pre mentálne poňatie si predstavte Git ako content manager pre tri rôzne stromy. Pod pojmom “strom” si treba v skutočnosti predstaviť “kolekciu súborov”. 1. HEAD 2. Index 3. Working directory Resetovanie
  32. 32. HEAD HEAD je ukazovateľ na referenciu aktuálnej vetvy, čo je vlastne ukazovateľ na posledný commit vytvorený v tejto vetve. To znamená, že HEAD bude rodič ďalšieho commitu, ktorý bude vytvorený. Najjednoduchšie je rozmýšľať nad HEAD-om, ako nad snapshotom posledného commitu. Resetovanie
  33. 33. Index Index návrh tvojho budúceho commitu - teda “Staging Area”. Resetovanie
  34. 34. Working directory Predchádzajúce dva stromy ukladajú svoj obsah vo vnútri .git priečinka efektívym spôsobom. Working Directory ich “rozbaľuje” do normálnych súborov (tie, s ktorými pracuješ). Working Directory je pieskovisko, kde si môžeš vyskúšať zmeny predtým, ako ich commitneš do “staging area” a následne do histórie. Resetovanie
  35. 35. Workflow Resetovanie
  36. 36. Predstavte si, že… …sme súbor zmenili 3x. Resetovanie
  37. 37. Resetovanie
  38. 38. Resetovanie
  39. 39. Resetovanie
  40. 40. Resetovanie
  41. 41. .gitignore
  42. 42. Na čo slúži? Slúži na definovanie množiny súborov, ktoré nebudú verzované Väčšinou pre generované temp a log súbory (napr. editorom či OS) Súbory sa definujú regulárnymi výrazmi https://github.com/github/gitignore .gitignore
  43. 43. Príklad #1 # ignoruj súbory s názvom Thumbs.db Thumbs.db # ignoruj .jpg súbory *.jpg # ale sleduj logo.jpg, aj keď .jpg sú ignorované patternom vyššie !logo.jpg .gitignore
  44. 44. Príklad #2 # ignoruj včetky priečinky a súbory TEST (aj v podpriečinkoch) TEST # ignoruj priečinok IMAGES iba v aktuálnom priečinku /IMAGES # ignoruj všetky súbory v priečinku MEDIA MEDIA/ .gitignore
  45. 45. Príklad #3 # ignoruj doc/notes.txt, ale nie doc/server/arch.txt doc/*.txt # ignoruj všetky .pdf súbory v priečinku doc/ doc/**/*.pdf # ale sleduj všetky readme.pdf súbory v priečinku doc/ !doc/**/readme.pdf .gitignore
  46. 46. Vetvy
  47. 47. Základ Vetvy
  48. 48. git branch git branch git branch -v git branch --merged git branch --no-merged Vetvy
  49. 49. git branch {name} Vetvy
  50. 50. git branch {name} Vetvy
  51. 51. git checkout {name} Vetvy
  52. 52. git checkout {name} Vetvy
  53. 53. A keď teraz urobím commit? Vetvy
  54. 54. Po dalšom commite Vetvy
  55. 55. git checkout master Vetvy
  56. 56. …a ďalší commit. Vetvy
  57. 57. …a keď ich chcem spojiť? Vetvy
  58. 58. git merge {branch} Vetvy
  59. 59. …a môžem zrušiť túto vetvu. Vetvy
  60. 60. git branch -d {branch} Vetvy
  61. 61. CONFLICT!!! Konflikty
  62. 62. Vidim tam toto <<<<<<< HEAD:index.html <div id="footer">contact : email.support@github.com</div> ======= <div id="footer"> please contact us at support@github.com </div> >>>>>>> iss53:index.html Konflikty
  63. 63. Čo urobím? 1. Vymažem čo nepotrebujem, upravim čo potrebujem 2. Uložim subor 3. git add index.html 4. …a commitnem! Konflikty
  64. 64. Konflikty
  65. 65. Rebase
  66. 66. Rebase? Môžeš vziať “záplatu” zo zmien, ktoré boli vytvorené v commite C3 a znova ich aplikovať na commit C4. Vezmeš zmeny robené na jednej vetve a aplikuješ ich na druhú.
  67. 67. Rebasing
  68. 68. Rebasing
  69. 69. git rebase git checkout iss53 git rebase master git checkout master git merge iss53
  70. 70. Stashing
  71. 71. Stash = skrýša Keď si počas práce na projekte potrebuješ dočasne odložiť rozpracované veci “bokom”, aby si urobil a commitol niečo prioritnejšie Ako veverička, ktorá si dočasne skryje oriešky, ktoré neskôr zje Stashing
  72. 72. git stash Uloží všetky rozpracované veci do skrýše. git stash list Stashing
  73. 73. git stash apply Aplikuje zmeny uložené v skrýši git stash apply stash@{2} Stashing
  74. 74. git stash drop Vymaže skrýšu s rozpracovanými zmenami git stash drop stash@{0} Stashing
  75. 75. git stash pop Skratka pre kombináciu dvoch príkazov nasledujúcich po sebe: git stash apply git stash drop
  76. 76. git stash branch {name} Vytvorí z odložených súborov v skrýši novú vetvu git stash branch test Stashing
  77. 77. git stash --patch Git nepridá všetky rozpracované súbor do skrýše, ale interaktívne sa opýta, ktoré zmeny sa majú odložiť a ktoré majú ostať rozpracované. Stashing
  78. 78. Tagging #git #is #awesome #yolo
  79. 79. Všetci vieme čo sú tagy Git disponuje možnosťou otagovať špecifický bod v histórii zmien, ktorý je dôležitý. Najčastejšie sa používajú na označovanie verzií a “releases”
 (napr. v0.2.1 etc.) Git používa 2 druhy tagov: 1. lightweight 2. annotated Tagging
  80. 80. git tag Vypíše zoznam tagov Je možné v nich aj filtrovať Tagging
  81. 81. Lightweight Lightweight tag su niečo ako vetva, ktorá sa ďalej nemení. V podstate je to checksum konkrétneho commitu uloženého v súbore – žiadne ďalšie informácie nie sú uložené. Tagging
  82. 82. git tag {name} Vytvorí lightweight tag s menom {name} git show {name} = vypíše základné informácie o tagu Tagging
  83. 83. Annotated Anotované tagy sú ukladané ako úplné objekty v databáze. Sú checksumované, obsahujú informáciu o taggerovom mene, emaile, a dátume. Obsahujú taktiež tagujúcu správu (obdoba commit message). Perlička: Môžu byť podpísané a overené pomocou GNU Privacy Guard (GPG). Tagging
  84. 84. git tag -a {name} Vytvorí anotovaný tag s menom {name} git tag -a {name} -m “…” git show {name} = vypíše všetky informácie o tagu git tag -a {name} {commit} = priradí tag commitu aj neskôr Tagging
  85. 85. Zdieľanie tagov git push origin {tagname} git push origin --tags Tagging
  86. 86. Hooks
  87. 87. Aj v gite je háčik Git má spôsob, ako spustiť špeciálne skripty, keď nastane nejaká dôležitá udalosť. Existujú dve skupiny hookov: client-side a server-side. Client-side hooky sú spustené operáciami ako commit, či merge. Server-side hooky bežia v pre sieťové operácia, ako napríklad prijatie pushnutých commitov. Hooks
  88. 88. Inštalácia Skript pod špecifickým názvom sa uloží go priečinka: .git/hooks Treba pozrieť do docky na názvy hookov Hooks
  89. 89. Thats all folks! Diky Broňa… © 2015 by Miňo

×