Chapters ā–¾ 2nd Edition

2.6 ŠžŃŠ½Š¾Š²ŠøŃ‚Šµ на Git - Tagging

Tagging

Како Šø ŠæŠ¾Š²ŠµŃœŠµŃ‚Š¾ VCSs, Git има способност Га Š¾Š·Š½Š°Ń‡ŃƒŠ²Š° оГреГени точки во ŠøŃŃ‚Š¾Ń€ŠøŃ˜Š°Ń‚Š° како важни. ŠžŠ±ŠøŃ‡Š½Š¾ Š»ŃƒŃ“ŠµŃ‚Š¾ ја користат оваа Ń„ŃƒŠ½ŠŗŃ†ŠøŠ¾Š½Š°Š»Š½Š¾ŃŃ‚ за обележување на точки за ослобоГување (v1.0, Šø така Š½Š°Ń‚Š°Š¼Ńƒ). Во овој Гел, ќе Š½Š°ŃƒŃ‡ŠøŃ‚Šµ како Га ги навеГете Гостапните ознаки, како Га креирате нови тагови Šø ŃˆŃ‚Š¾ се различни типови на ознаки.

Листата на Š²Š°ŃˆŠøŃ‚е етикети

Листата на Гостапни ознаки во Git е јасна. Дамо внесете git tag (со Š¾ŠæŃ†ŠøŃ˜Š°` -l` или --list):

$ git tag
v0.1
v1.3

ŠžŠ²Š°Š° команГа ги навеГува таговите по Š°Š·Š±ŃƒŃ‡ŠµŠ½ реГослеГ; реГослеГот по кој тие се ŠæŠ¾Ń˜Š°Š²ŃƒŠ²Š°Š°Ń‚ нема вистинска важност.

ŠœŠ¾Š¶ŠµŃ‚Šµ исто така Га ŠæŃ€ŠµŠ±Š°Ń€ŃƒŠ²Š°Ń‚е за ознаки кои оГговараат на оГреГен моГел. ŠŠ° пример, изворот repo на Git соГржи повеќе оГ 500 ознаки. Ако сте заинтересирани само за глеГање на ŃŠµŃ€ŠøŃ˜Š°Ń‚Š° 1.8.5, можете Га го направите ова:

$ 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
  1. Š˜Š·Š¼ŠµŠ½ŠøŃ‚Šµ ознаки на ознаки бараат -l или` --list` Š¾ŠæŃ†ŠøŃ˜Š°

Ако сакате само целата листа на ознаки, ŠøŠ·Š²Ń€ŃˆŃƒŠ²Š°Ń˜ŃœŠø ја команГата git tag implicitly ŠæŃ€ŠµŃ‚ŠæŠ¾ŃŃ‚Š°Š²ŃƒŠ²Š° Гека сакате листа Šø обезбеГува еГна; ŃƒŠæŠ¾Ń‚Ń€ŠµŠ±Š°Ń‚Š° на -l или` -list` во овој ŃŠ»ŃƒŃ‡Š°Ń˜ не е заГолжително.

Š”Š¾ŠŗŠ¾Š»ŠŗŃƒ, сепак, ŃŠ½Š°Š±Š“ŃƒŠ²Š°Ń‚Šµ шема со ŃŸŠ¾ŠŗŠµŃ€ Га ги совпаѓате ŠøŠ¼ŠøŃšŠ°Ń‚а на ознаките, ŃƒŠæŠ¾Ń‚Ń€ŠµŠ±Š°Ń‚Š° на -l или` -list` е заГолжителна.

ŠšŃ€ŠµŠøŃ€Š°ŃšŠµ на етикети

Git ŠæŠ¾Š“Š“Ń€Š¶ŃƒŠ²Š° Гва типа на ознаки: lightweight Šø annotated.

Лесна ознака е многу слична на гранка која не се менува - тоа е само ŠæŠ¾ŠŗŠ°Š¶ŃƒŠ²Š°Ń‡ за оГреГена обврска.

Депак, означените ознаки се Ń‡ŃƒŠ²Š°Š°Ń‚ како целосни Š¾Š±Ń˜ŠµŠŗŃ‚Šø во базата на поГатоци Git. Тие се ŠæŃ€Š¾Š²ŠµŃ€ŃƒŠ²Š°Š°Ń‚; соГржи името на етикетата, е-ŠæŠ¾ŃˆŃ‚Š°Ń‚Š° Šø Š“Š°Ń‚ŃƒŠ¼Š¾Ń‚; имаат порака за Š¾Š·Š½Š°Ń‡ŃƒŠ²Š°ŃšŠµ; Šø може Га биГе ŠæŠ¾Ń‚ŠæŠøŃˆŠ°Š½ Šø потврГен со GNU Privacy Guard (GPG). ŠžŠæŃˆŃ‚Š¾ е препорачливо Га креирате означени ознаки за Га можете Га ги имате сите овие информации; но ако сакате привремена ознака или пораГи некоја причина не сакате Га ги заГржите Š“Ń€ŃƒŠ³ŠøŃ‚Šµ информации, лесни ознаки се Гостапни исто така.

Анкетирани ознаки

ŠšŃ€ŠµŠøŃ€Š°ŃšŠµŃ‚Š¾ означена ознака во Git е еГноставна. ŠŠ°Ń˜Š»ŠµŃŠµŠ½ начин е Га се навеГе -a кога ќе ја ŃŃ‚Š°Ń€Ń‚ŃƒŠ²Š°Ń‚Šµ команГата` tag`:

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

-m навеГува порака за Š¾Š·Š½Š°Ń‡ŃƒŠ²Š°ŃšŠµ, која е Š·Š°Ń‡ŃƒŠ²Š°Š½Š° со ознаката. Ако не навеГете порака за обележана ознака, Git го ŠæŃƒŃˆŃ‚Šø ŃƒŃ€ŠµŠ“Š¾Ń‚ за Га може Га го Š½Š°ŠæŠøŃˆŠµŃ‚е.

ŠœŠ¾Š¶ŠµŃ‚Šµ Га ги виГите поГатоците оГ ознаката заеГно со посветеноста која беше обележана со ŠŗŠ¾Ń€ŠøŃŃ‚ŠµŃšŠµ на команГата 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

Дека ги покажува информациите за Š¾Š·Š½Š°Ń‡ŃƒŠ²Š°Ń‡Š¾Ń‚, Š“Š°Ń‚ŃƒŠ¼Š¾Ń‚ на кој е обележана посветеноста Šø пораката за коментар преГ Га се прикажат информациите за обврски.

Лесни ознаки

Š”Ń€ŃƒŠ³ начин за Š¾Š·Š½Š°Ń‡ŃƒŠ²Š°ŃšŠµ на обврските е со лесна ознака. ŠžŠ²Š° во основа е проверка на Š·Š°Ń‡ŃƒŠ²ŃƒŠ²Š°ŃšŠµ ŃˆŃ‚Š¾ е Š·Š°Ń‡ŃƒŠ²Š°Š½Š° во Гатотека - нема Š“Ń€ŃƒŠ³Šø информации ŃˆŃ‚Š¾ се Ń‡ŃƒŠ²Š°Š°Ń‚. За Га креирате лесна ознака, не Š“Š°Š²Š°Ń˜Ń‚Šµ Š½ŠøŃ‚Ńƒ еГна оГ -a,` -s` или -m опциите, Ń‚ŃƒŠŗŃƒ Га обезбеГите име на ознака:

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

ŠžŠ²Š¾Ń˜ пат, ако го ŃŃ‚Š°Ń€Ń‚ŃƒŠ²Š°Ń‚Šµ git show на ознаката, не ги глеГате Гополнителните информации за тагот. ŠšŠ¾Š¼Š°Š½Š“Š°Ń‚Š° само ја покажува посветеноста:

$ 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

Š”ŠµŠ»ŠµŠŗŃ‚ŠøŃ€Š°Ń˜ поГоцна

ŠœŠ¾Š¶ŠµŃ‚Šµ исто така Га Š¾Š·Š½Š°Ń‡ŃƒŠ²Š°Ń‚е обврски откако сте се преселиле минатото. Да претпоставиме Гека Š²Š°ŃˆŠ°Ń‚а ŠøŃŃ‚Š¾Ń€ŠøŃ˜Š° на ŠøŠ·Š²Ń€ŃˆŠµŠ½ŠøŃ˜Š° изглеГа вака:

$ 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

Дега, ŠæŃ€ŠµŃ‚ŠæŠ¾ŃŃ‚Š°Š²ŃƒŠ²Š°Ń˜ Гека заборавивте Га го означите проектот на v1.2, кој беше на "updated rakefile" ŠøŠ·Š²Ń€ŃˆŠ°Ń‚. ŠœŠ¾Š¶ŠµŃ‚Šµ Га го ГоГаГете по факт. За Га го означите тоа ŠøŠ·Š²Ń€ŃˆŃƒŠ²Š°ŃšŠµ, на ŠŗŃ€Š°Ń˜Š¾Ń‚ оГ команГата ќе го навеГете контролниот сума за ŠøŠ·Š²Ń€ŃˆŃƒŠ²Š°ŃšŠµ (или Гел оГ него):

$ git tag -a v1.2 9fceb02

Може Га се виГи Гека сте го обележале посветеноста:

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

ДпоГелување ознаки

По Гифолт, команГата git push не ги ŠæŃ€ŠµŠ½ŠµŃŃƒŠ²Š° ознаките на оГГалечени сервери. Ќе мора експлицитно Га притиснете тагови на споГелен сервер откако ќе ги креирате. ŠžŠ²Š¾Ń˜ процес е исто како споГелување на оГГалечени гранки - може Га го ŃŃ‚Š°Ń€Ń‚ŃƒŠ²Š°Ń‚Šµ 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

Ако имате многу ознаки кои сакате Га ги притиснете оГеГнаш, исто така можете Га ја користите Š¾ŠæŃ†ŠøŃ˜Š°Ń‚а --tags на команГата` git push`. ŠžŠ²Š° ќе ги пренесе сите ваши ознаки на оГГалечениот сервер ŃˆŃ‚Š¾ не се веќе Ń‚Š°Š¼Ńƒ.

$ 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

Дега, кога некој Š“Ń€ŃƒŠ³ клонира или повлекува оГ Š²Š°ŃˆŠµŃ‚Š¾ ŃŠŗŠ»Š°Š“ŠøŃˆŃ‚Šµ, тие ќе ги Š“Š¾Š±ŠøŃ˜Š°Ń‚ Šø сите ваши ознаки.

ŠŸŃ€Š¾Š²ŠµŃ€ŠŗŠ° на тагови

Ако сакате Га ги виГите верзиите на Гатотеките на кои Š¾Š·Š½Š°Ń‡ŃƒŠ²Š° ознака, можете Га направите проверка на git, иако ова го става Š²Š°ŃˆŠµŃ‚о ŃŠŗŠ»Š°Š“ŠøŃˆŃ‚Šµ во "detached HEAD"(отстранета) ŃŠ¾ŃŃ‚Š¾Ń˜Š±Š°, која има некои лоши несакани ефекти:

$ git checkout 2.0.0
Note: checking out '2.0.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch>

HEAD is now at 99ada87... Merge pull request #89 from schacon/appendix-final

$ git checkout 2.0-beta-0.1
Previous HEAD position was 99ada87... Merge pull request #89 from schacon/appendix-final
HEAD is now at df3f601... add atlas.json and cover image

Во 'detached HEAD' ŃŠ¾ŃŃ‚Š¾Ń˜Š±Š°, ако направите промени, а потоа креирате залог, ознаката ќе остане иста, но Š²Š°ŃˆŠ°Ń‚а нова обврска нема Га припаѓа на која било гранка Šø ќе биГе неГостапна, освен со точната обврска за ŠøŠ·Š²Ń€ŃˆŃƒŠ²Š°ŃšŠµ. Така, ако треба Га направите промени - Га речете Гека наместите Š³Ń€ŠµŃˆŠŗŠ° на постара Š²ŠµŃ€Š·ŠøŃ˜Š°, на пример - обично ќе сакате Га креирате гранка:

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

Ако го направите ова Šø направите залог, Š²Š°ŃˆŠ°Ń‚Š° гранка "version2" ќе биГе малку поинаква оГ Š²Š°ŃˆŠ°Ń‚Š° ознака "v2.0.0", биГејќи ќе се приГвижи напреГ со Š²Š°ŃˆŠøŃ‚е нови промени, па биГете внимателни.

scroll-to-top