-
1. Početak
- 1.1 O kontroli verzije
- 1.2 Kratka istorija Gita
- 1.3 Osnove Gita
- 1.4 Komandna linija
- 1.5 Instaliranje Gita
- 1.6 Podešavanja za prvi put
- 1.7 Traženje pomoći
- 1.8 Rezime
-
2. Osnove Gita
- 2.1 Pravljenje Git repozitorijuma
- 2.2 Snimanje promena na repozitorijumu
- 2.3 Pregled istorije komitova
- 2.4 Opovrgavanje
- 2.5 Rad sa udaljenim repozitorijumima
- 2.6 Tagovanje
- 2.7 Alijasi
- 2.8 Rezime
-
3. Grananje u Gitu
- 3.1 Grananje ukratko
- 3.2 Osnove grananja i spajanja
- 3.3 Upravljanje granama
- 3.4 Tokovi rada sa grananjem
- 3.5 Udaljene grane
- 3.6 Rebaziranje
- 3.7 Rezime
-
4. Git on the Server
- 4.1 Protokoli
- 4.2 Postavljanje Gita na server
- 4.3 Generisanje javnog SSH ključa
- 4.4 Podešavanje servera
- 4.5 Git Daemon
- 4.6 Pametan HTTP
- 4.7 GitWeb
- 4.8 Opcije za hostovanje koje nude treća lica
- 4.9 Rezime
-
5. Distribuirani Git
- 5.1 Distribuirani tokovi rada
- 5.2 Kako doprineti projektu
- 5.3 Održavanje projekta
- 5.4 Rezime
-
6. GitHub
-
7. Git Tools
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Summary
-
8. Prilagođavanje Gita
- 8.1 Konfiguracija Gita
- 8.2 Git atributi
- 8.3 Git hukovi
- 8.4 Primer polise sprovedene od strane Gita
- 8.5 Rezime
-
9. Git i ostali sistemi
- 9.1 Git kao klijent
- 9.2 Migriranje na Git
- 9.3 Rezime
-
10. Git iznutra
- 10.1 Vodovod i porcelan
- 10.2 Git objekti
- 10.3 Git reference
- 10.4 Paketoteke
- 10.5 Refspek
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Summary
-
A1. Appendix A: Git in Other Environments
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in Powershell
- A1.7 Summary
-
A2. Appendix B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
2.6 Osnove Gita - Tagovanje
Tagovanje
Kao i većina VCS-ova, Git ima mogućnost tagovanja (obeležavanja, označavanja) određenih tačaka u istoriji kao važne. Tipično, ova funkcionalnost se koristi da bi se obeležile tačke izlaska novih verzija (v1.0 i tako dalje). U ovom odeljku, naučićete kako da izlistate dostupne tagove, kako da napravite nove tagove, i kakve vrste tagova postoje.
Listanje tagova
Listanje dostupnih tagova u Gitu je prilično direktno.
Samo treba da ukucate git tag
:
$ git tag
v0.1
v1.3
Ova komanda će izlistati tagove uređene u alfabetni redosled; dakle redosled kojim se javljaju nema nikakvu važnost.
Možete i da tražite tagove po nekom obrascu. Repozitorijum izvornog koda Gita, na primer, sadrži preko 500 tagova. Ako želite da pogledate samo seriju 1.8.5, možete da pokrenete ovo:
$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5-rc3
v1.8.5.1
v1.8.5.2
v1.8.5.3
v1.8.5.4
v1.8.5.5
Kreiranje tagova
Git koristi dve osnovne vrste tagova: lake i pribeležene.
Laki tagovi dosta liče na granu koja se ne menja — to je samo pokazivač na određeni komit.
Pribeleženi tagovi se, s druge strane, čuvaju kao puni objekti u Gitovoj bazi podataka. Oni dobijaju svoju kontrolnu sumu; sadrže ime i mejl osobe koja je stavila tag kao i datum kada je to učinjeno; imaju tag poruku; i mogu da se potpišu i verifikuju pomoću GNU Privacy Guard (GPG). Generalno se preporučuje da pravite pribeležene tagove kako biste imali sve ove podatke; ali ako želite da dodate samo trenutni tag ili iz nekog razloga ne želite da čuvate ostale podatke o njemu, tu su laki tagovi.
Pribeleženi tagovi
Kreiranje pribeleženog taga u Gitu je jednostavno.
Najlakši način je da specificirate -a
kada pokrenete komandu tag
:
$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4
Sa -m
specificirate tag poruku, koja se čuva zajedno sa tagom.
Ako ne specificirate poruku za pribeleženi tag, Git pokreće editor da biste mogli da je ukucate.
Možete videti podatke o tagu zajedno sa komitom koji je njime tagovan pomoću komande git show
:
$ git show v1.4
tag v1.4
Tagger: Ben Straub <ben@straub.cc>
Date: Sat May 3 20:19:12 2014 -0700
my version 1.4
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
To pokazuje informacije o osobi koja je dodala tag, datum kada je komit tagovan i pribeleženu poruku pre nego što pokaže podatke o samom komitu.
Laki tagovi
Drugi način da se taguju komitovi je pomoću lakih tagova.
Ovo u suštini znači da se kontrolna suma komita smešta u fajl — nikakve druge informacije se ne čuvaju.
Da biste napravili laki tag, samo nemojte da dodate nijednu od opcija -a
, -s
i -m
:
$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5
Ako sada pokrenete git show
za taj tag, nećete videti dodatne informacije o tagu.
Komanda pokazuje samo komit:
$ git show v1.4-lw
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
Naknadno tagovanje
Možete da tagujete komitove i nakon što ih prođete. Pretpostavimo da vam istorija komitova izgleda ovako:
$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme
Sada, pretpostavimo da ste zaboravili da dodate tag projektu kod verzije v1.2, koja je izašla uz komit updated rakefile
.
Možete da dodate tag iako ste već prošli taj komit.
Da biste ga tagovali, treba da specificirate čeksumu komita (ili njen deo) na kraj komande:
$ git tag -a v1.2 9fceb02
Sada vidite da ste tagovali komit:
$ git tag
v0.1
v1.2
v1.3
v1.4
v1.4-lw
v1.5
$ git show v1.2
tag v1.2
Tagger: Scott Chacon <schacon@gee-mail.com>
Date: Mon Feb 9 15:32:16 2009 -0800
version 1.2
commit 9fceb02d0ae598e95dc970b74767f19372d61af8
Author: Magnus Chacon <mchacon@gee-mail.com>
Date: Sun Apr 27 20:43:35 2008 -0700
updated rakefile
...
Deljenje tagova
Po podrazumevanim podešavanjima, komanda git push
ne prenosi tagove udaljenim serverima.
Moraćete da eskplicitno gurnete tagove deljenom serveru nakon što ih kreirate.
Ovaj proces je isti kao deljenje udaljenih grana — možete da ga pokrenete sa git push origin <ime-taga>
.
$ git push origin v1.5
Counting objects: 14, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (14/14), 2.05 KiB | 0 bytes/s, done.
Total 14 (delta 3), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
* [new tag] v1.5 -> v1.5
Ako imate puno tagova koje želite da gurnete odjednom, možete da koristite i --tags
opciju uz komandu git push
.
Ovo će preneti sve tagove na udaljeni server koji trenutno nisu tamo.
$ git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 160 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
* [new tag] v1.4 -> v1.4
* [new tag] v1.4-lw -> v1.4-lw
Sada, kada neko klonira ili povuče sa vašeg repozitorijuma, dobiće i sve vaše tagove.
Čekautovanje tagova
Ne možete bukvalno da čekautujete tag u Gitu, jer oni ne mogu da se pomeraju.
Ako želite da stavite verziju svog repozitorijuma u radni direktorijum koja izgleda kao specificirani tag, možete da napravite novu granu na specificiranom tagu sa git checkout -b [branchname] [tagname]
:
$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'
Naravno, ako uradite ovo i zatim komitujete, vaša grana version2
će biti neznatno drugačija od vašeg v2.0.0
taga jer će se pomeriti unapred zajedno sa novim promenama, zato budite obazrivi.