Git
Chapters ▾ 2nd Edition

2.6 Osnove Git - Označevanje

Označevanje

Kot večina VCS-jev ima Git zmožnost označevanja določenih točk v zgodovini kot pomembne. Običajno ljudje uporabljajo to funkcionalnost za določanje točk izdaj (v1.0 in tako naprej). V tej sekciji se boste naučili kako izpisati oznake (tag-e) na voljo, kako ustvariti nove oznake in kateri različni tipi oznak so na voljo.

Izpisovanje vaših oznak

Izpisovanje oznak, ki so na voljo v Git-u je precej enostavno. Samo vtipkate git tag:

$ git tag
v0.1
v1.3

Ta ukaz izpiše oznake v abecednem vrstnem redu; vrstni red, v katerem se pojavijo, nima neke prave pomembnosti.

Lahko tudi iščete oznake z določenim vzorcem. Git izvorni repozitorij na primer vsebuje več kot 500 oznak. Če vas zanima pogledati samo serijo 1.8.5, lahko poženete to:

$ 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

Ustvarjanje oznak

Git uporablja dva glavna tipa oznak: enostavnega in anotacije.

Enostavna oznaka je zelo podobna veji, ki se ne spremeni - je samo kazalec na določeno pošiljanje.

Anotirane oznake so po drugi strani shranjene kot polni objekti v podatkovni bazi Git. Imajo preverjene vsote; vsebujejo ime označevalca, e-pošto in datum; imajo sporočilo oznake; in so lahko podpisane in preverjene z GNU Privacy Guard (GPG). V splošnem je priporočljivo, da ustvarite anotirane oznake, da imate lahko vse te informacije; vendar če želite začasno oznako ali zaradi kakšnega razloga ne želite imeti ostalih informacij, so na voljo tudi lahke oznake.

Anotirane oznake

Ustvarjanje anotirane oznake v Git-u je enostavno. Najenostavnejši način je določiti -a, ko poženete ukaz tag:

$ git tag -a v1.4 -m 'my version 1.4'
$ git tag
v0.1
v1.3
v1.4

-m določa sporočilo označevanja, ki je bilo shranjeno z oznako. Če ne določite sporočila za anotirano oznako, Git zažene vaš urejevalnik, da ga lahko vpišete vanj.

Vidite lahko podatke oznake skupaj s pošiljanjem, ki je bilo označeno z uporabo ukaza 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 pokaže informacije oznake, datum pošiljanja, ko je bilo označeno in sporočilo anotacije pred prikazom informacij pošiljanja.

Lahke oznake

Drug način za oznako pošiljanja je z lahko oznako. To je v osnovi preverjena vsota pošiljanja v datoteki - nobene druge informacije se ne ohrani. Da ustvarite lahko oznako, ne dodajte opcij -a, -s ali -m:

$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5

Tokrat, če poženete git show na oznaki, ne vidite dodatnih informacij oznake. Ukaz samo prikazuje pošiljanje:

$ 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

Označevanje kasneje

Pošiljanja lahko označite tudi po tem, ko se prestavili preko njih. Predpostavimo, da vaša zgodovina pošiljanja izgleda takole:

$ 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

Sedaj predpostavimo, da ste pozabili označiti projekt pri v1.2, ki je bil pri “updated rakefile” pošiljanju. Lahko ga dodate za tem dejstvom. Da označite to pošiljanje, določite preverjeno vsoto pošiljanja (ali del nje) na koncu ukaza:

$ git tag -a v1.2 9fceb02

Vidite lahko, da ste označili pošiljanje:

$ 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
...

Deljenej oznak

Privzeto ukaz git push ne prenese oznak na oddaljene strežnike. Morali boste eksplicitno poriniti oznake na deljeni strežnik za tem, ko ste jih naredili. Ta proces je točno kot deljenje oddaljenih vej - lahko poženete git push origin [tagname].

$ 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

Če imate veliko oznak, ki jih želite poriniti naenkrat, lahko uporabite tudi opcijo --tags ukazu git push. To bo preneslo na oddaljeni strežnik vse vaše oznake, ki še niso tam.

$ 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

Sedaj, ko nekdo drug klonira ali potegne iz vašega repozitorija, bo dobil tudi vse vaše oznake.

Izpisovanje oznak

V resnici ne morete izpisati (check out) oznake v Git-u, saj se ne morejo prenašati naokoli. Če želite dati verzijo vašega repozitorija v vaš delovni direktorij, ki izgleda kot določena oznaka, lahko ustvarite novo vejo na določeni oznaki z git checkout -b [branchname] [tagname]:

$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'

Seveda, če to naredite in naredite pošiljanje, bo vaša veja version2 malenkost drugačna kot vaša v2.0.0 oznaka, saj bo prenešena naprej z novimi spremembami, torej le bodite pazljivi.