Git: Difference between revisions
No edit summary |
|||
(23 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
=Sissejuhatus= | =Sissejuhatus= | ||
Versioonihalduse vajaduses pole vaja programmeerijaid veenda. Kui oled algaja ja pole sellest midagi kuulnud, siis loe http://et.wikipedia.org/wiki/Versioonihaldus | Versioonihalduse vajaduses pole vaja programmeerijaid veenda. Kui oled algaja ja pole sellest midagi kuulnud, siis loe http://et.wikipedia.org/wiki/Versioonihaldus | ||
==Alusmõisted== | |||
*Versioonihaldusüsteem - | |||
*Tsentraliseeritud versioonihaldussüsteem - http://progit.org/book/ch1-1.html | |||
*Hajus verisoonihaldusüsteem - http://progit.org/book/ch1-1.html | |||
*Git - tasuta ja avatud lätekoodiga hajutatud versioonihaldussüsteem, mille loomisel pöörati tähelepanu skaleeruvusele (väikesed...suured projektid), kiirusele ja efektiivsusele. | |||
==Põhimõisted== | ==Põhimõisted== | ||
Git terviklikkus - süsteem kontrollib SHA-1 räside abil failide terviklikkust. | |||
Tööversioon (Working directory) | |||
Staging area - | |||
Git directory - | |||
==GIT töövoog== | |||
git clone | |||
töökataloogis olevate failide modifitseerimine | |||
stage files - staging area | |||
commit staging area -> Git directory. | |||
==Kesksed vs hajusad süsteemid== | ==Kesksed vs hajusad süsteemid== | ||
Line 26: | Line 46: | ||
<source lang="bash"> | <source lang="bash"> | ||
git init | git init | ||
git add . | |||
git commit -m 'Uus projekt' | |||
</source> | </source> | ||
==Projekti kloonimine enda arvutisse== | |||
<source lang="bash"> | |||
git clone git://robot.itcollege.ee/robotex.git | |||
</source> | |||
Git toetab järgmiseid protokolle: | |||
*ssh:// | |||
*http:// | |||
*https:// | |||
*git:// | |||
*file:// | |||
==Uue faili või failide lisamine versioonihaldusesse== | ==Uue faili või failide lisamine versioonihaldusesse== | ||
'''git add ''<failinimi>''''' | |||
Kasutada saab metamärke. | |||
Näiteks cpp ja h laiendiga failide lisamiseks: | |||
<source lang="bash"> | <source lang="bash"> | ||
git add *.cpp | git add *.cpp | ||
Line 38: | Line 85: | ||
git commit –m 'Esimene versioon' | git commit –m 'Esimene versioon' | ||
</source> | </source> | ||
==Hoidla seisundi vaatamine== | |||
<source lang="bash"> | |||
git status | |||
</source> | |||
==Ingnoreerimine== | |||
Kõiki faile ei ole mõistlik versioonihaldusesse kaasata. Näiteks C objektfaile, varukoopiaid jne. | |||
Failide versioonihaldusest välja jätmine toimub failis ''.gitignore'' kirjeldatud mustrite alusel. | |||
<source lang="bash"> | |||
*.[oa] | |||
*~ | |||
*.jpg | |||
</source> | |||
==git log== | |||
Võib ka lihtsalt ''git log'' | |||
<source lang="bash"> | |||
git log --pretty | |||
</source> | |||
==git diff== | |||
<source lang="bash"> | |||
git diff | |||
</source> | |||
=Harjutused= | |||
==Hoidla loomine== | |||
==Githubi hoidla loomine== | |||
==Muutmine ja commit== | |||
==Muutmine ja tagasivõtmine== | |||
==Pull ja push== | |||
==Haru loomine ja kasutamine== | |||
==Konfliktide lahendamine== | |||
==Töövoog github abil== | |||
==Töövoog agiilsele teamile== | |||
==Ruby on Rails ja GIT== | |||
http://toolmantim.com/thoughts/setting_up_a_new_rails_app_with_git | |||
==Git index, repository, working copy== | |||
=Mis on Git kõhus= | |||
==git kataloog== | |||
Hoidlas on igas kataloogis .git kataloog (või muutujas GIT_DIR määratud kataloog). Siin hoitakse konfiguratsiooni ja muudatuste andmebaasi. | |||
==Objektide andmebaas== | |||
Siin hoitakse nelja tüüpi objekte | |||
*blob | |||
*tree | |||
*commit | |||
*tag | |||
=Lingid= | =Lingid= | ||
Line 45: | Line 166: | ||
[http://progit.org/book/ Suurepärane GIT õpe. siit võiks alustada] | [http://progit.org/book/ Suurepärane GIT õpe. siit võiks alustada] | ||
[http://www.slideshare.net/chacon/getting-git Põhjalikud GIT slaidid. Saab selgeks kasutamise ja aru, mis on git kõhus] | |||
[http://gitimmersion.com/index.html Hea algõpetus - UUS] | |||
[http://slides.seld.be/?file=2011-01-05+Git+Introduction.html#1 Kiire ülevaade GIT korraldustest] | |||
http://net.tutsplus.com/tutorials/tools-and-tips/git-tips-from-the-pros/ | |||
==Linus GIT versioonihaldusest== | ==Linus GIT versioonihaldusest== | ||
Line 51: | Line 180: | ||
Kohustuslik vaatamisvara, kui tunned versioonihalduse alustõdesid ja ka puuduseid. Näiteks oled lahendanud merge konflikte ja teinud harusid näiteks SVN hoidlas ja üritanud neid hallata. | Kohustuslik vaatamisvara, kui tunned versioonihalduse alustõdesid ja ka puuduseid. Näiteks oled lahendanud merge konflikte ja teinud harusid näiteks SVN hoidlas ja üritanud neid hallata. | ||
<youtube | <youtube>4XpnKHJAok8</youtube> | ||
Pikk lugu 1h10m | Pikk lugu 1h10m | ||
Line 65: | Line 194: | ||
* hash on hea, et tagada terviklikus (kettal on halb blokk, siis teised süsteemid annavad vigase väljavõtte teie koodist) terviklikkus on GIT puhul tagatud | * hash on hea, et tagada terviklikus (kettal on halb blokk, siis teised süsteemid annavad vigase väljavõtte teie koodist) terviklikkus on GIT puhul tagatud | ||
* GIT on kiire | * GIT on kiire | ||
* Kuigi GIT on kiire ära pane 8GB paljudest komponetidest koosnevat kooslust ühte reposse...tee neid mitu. Vastasel juhul võtab esimene clone palju aega. | |||
* Suurte projektide haldamiseks on master project, mis seob erinevad git repod omavahel ära | |||
GIT | GIT | ||
<youtube | <youtube>8dhZ9BXQgc4</youtube> | ||
==Joeli arvamus hajusatest versioonikontrollisüsteemidest== | ==Joeli arvamus hajusatest versioonikontrollisüsteemidest== | ||
Line 77: | Line 210: | ||
PS: uusi asju siit videost ei õpi. | PS: uusi asju siit videost ei õpi. | ||
<youtube | <youtube>GTMC3g2Xy8c</youtube> |
Latest revision as of 13:13, 24 July 2015
NB SEE ON TOORES PALA:)
Sissejuhatus
Versioonihalduse vajaduses pole vaja programmeerijaid veenda. Kui oled algaja ja pole sellest midagi kuulnud, siis loe http://et.wikipedia.org/wiki/Versioonihaldus
Alusmõisted
- Versioonihaldusüsteem -
- Tsentraliseeritud versioonihaldussüsteem - http://progit.org/book/ch1-1.html
- Hajus verisoonihaldusüsteem - http://progit.org/book/ch1-1.html
- Git - tasuta ja avatud lätekoodiga hajutatud versioonihaldussüsteem, mille loomisel pöörati tähelepanu skaleeruvusele (väikesed...suured projektid), kiirusele ja efektiivsusele.
Põhimõisted
Git terviklikkus - süsteem kontrollib SHA-1 räside abil failide terviklikkust. Tööversioon (Working directory) Staging area - Git directory -
GIT töövoog
git clone töökataloogis olevate failide modifitseerimine stage files - staging area commit staging area -> Git directory.
Kesksed vs hajusad süsteemid
Paigaldamine Ubuntu Linux keskkonnas
apt-get install git-core
Esmane seadistamine
Seadistada tuleb kasutajanimi, e-posti aadress, tekstiredaktor, ja merge vahend (diff programm)
git config --global user.name "Sinu Nimi"
git config --global user.email sinu@aadress.ee
git config --global core.editor vim
git config --global merge.tool vimdiff
Uue projekti loomine olemasolevatest failidest
Mine kataloogi, milles isalduvast soovid teha git hoidla ja initsialiseeri see.
git init
git add .
git commit -m 'Uus projekt'
Projekti kloonimine enda arvutisse
git clone git://robot.itcollege.ee/robotex.git
Git toetab järgmiseid protokolle:
- ssh://
- http://
- https://
- git://
- file://
Uue faili või failide lisamine versioonihaldusesse
git add <failinimi>
Kasutada saab metamärke.
Näiteks cpp ja h laiendiga failide lisamiseks:
git add *.cpp
git add *.h
Commit
git commit –m 'Esimene versioon'
Hoidla seisundi vaatamine
git status
Ingnoreerimine
Kõiki faile ei ole mõistlik versioonihaldusesse kaasata. Näiteks C objektfaile, varukoopiaid jne. Failide versioonihaldusest välja jätmine toimub failis .gitignore kirjeldatud mustrite alusel.
*.[oa]
*~
*.jpg
git log
Võib ka lihtsalt git log
git log --pretty
git diff
git diff
Harjutused
Hoidla loomine
Githubi hoidla loomine
Muutmine ja commit
Muutmine ja tagasivõtmine
Pull ja push
Haru loomine ja kasutamine
Konfliktide lahendamine
Töövoog github abil
Töövoog agiilsele teamile
Ruby on Rails ja GIT
http://toolmantim.com/thoughts/setting_up_a_new_rails_app_with_git
Git index, repository, working copy
Mis on Git kõhus
git kataloog
Hoidlas on igas kataloogis .git kataloog (või muutujas GIT_DIR määratud kataloog). Siin hoitakse konfiguratsiooni ja muudatuste andmebaasi.
Objektide andmebaas
Siin hoitakse nelja tüüpi objekte
- blob
- tree
- commit
- tag
Lingid
Suurepärane GIT õpe. siit võiks alustada Põhjalikud GIT slaidid. Saab selgeks kasutamise ja aru, mis on git kõhus
Kiire ülevaade GIT korraldustest
http://net.tutsplus.com/tutorials/tools-and-tips/git-tips-from-the-pros/
Linus GIT versioonihaldusest
Linus ei õpeta siin GIT kasutamist vaid räägib, miks GIT on omasugune ja sobiv. Kohustuslik vaatamisvara, kui tunned versioonihalduse alustõdesid ja ka puuduseid. Näiteks oled lahendanud merge konflikte ja teinud harusid näiteks SVN hoidlas ja üritanud neid hallata.
Pikk lugu 1h10m
Vaba interpretatsioon järgnevast videost.
- CVS - paha paha:) "aka devil". SVN on selle mõttetu vend. (Linus soovitab SVN kasutajatel saalist lahkuda:) Kui teile meeldib CVS, siis peaksite olema asutuses, kes teie vaimse tervisega tegeleb.
- bitkeeper - positiivne (inspireerinud giti, kuigi git on bitkeeperist väga erinev)
- git kasutamine algusaastatel nõudis korrsliku ajujõudu:)
- Keskne kooriserver pole hea
- merge CVSis on suur naerukoht (complete disaster=how stupid people are)
- Igal arendajal on oma haru
- Mercurial on samuti heal põhimõttel tehtud
- hash on hea, et tagada terviklikus (kettal on halb blokk, siis teised süsteemid annavad vigase väljavõtte teie koodist) terviklikkus on GIT puhul tagatud
- GIT on kiire
- Kuigi GIT on kiire ära pane 8GB paljudest komponetidest koosnevat kooslust ühte reposse...tee neid mitu. Vastasel juhul võtab esimene clone palju aega.
- Suurte projektide haldamiseks on master project, mis seob erinevad git repod omavahel ära
GIT
Joeli arvamus hajusatest versioonikontrollisüsteemidest
Gource software version control visualization - Git to v1.0
PS: uusi asju siit videost ei õpi.