-
1. Pričetek
- 1.1 O nadzoru različic
- 1.2 Kratka zgodovina Git-a
- 1.3 Osnove Git
- 1.4 The Command Line
- 1.5 Git namesitev
- 1.6 Prva namestitev Git-a
- 1.7 Pridobitev pomoči
- 1.8 Povzetek
-
2. Osnove Git
- 2.1 Pridobitev repozitorija Git
- 2.2 Snemanje sprememb repozitorija
- 2.3 Pregled zgodovine pošiljanja
- 2.4 Razveljavljanje stvari
- 2.5 Delo z daljavami
- 2.6 Označevanje
- 2.7 Git aliasi
- 2.8 Povzetek
-
3. Veje Git
- 3.1 Veje na kratko
- 3.2 Osnove vej in združevanja
- 3.3 Upravljanje vej
- 3.4 Potek dela z vejami
- 3.5 Oddaljene veje
- 3.6 Ponovno baziranje (rebasing)
- 3.7 Povzetek
-
4. Git na strežniku
- 4.1 Protokoli
- 4.2 Pridobiti Git na strežnik
- 4.3 Generiranje vaših javnih ključev SSH
- 4.4 Nastavitev strežnika
- 4.5 Prikriti proces Git
- 4.6 Pametni HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Tretje osebne opcije gostovanja
- 4.10 Povzetek
-
5. Distribuirani Git
- 5.1 Distribuirani poteki dela
- 5.2 Prispevanje projektu
- 5.3 Vzdrževanje projekta
- 5.4 Povzetek
-
6. GitHub
-
7. Orodja Git
- 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 Povzetek
-
8. Prilagoditev Git-a
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git kljuke
- 8.4 An Example Git-Enforced Policy
- 8.5 Povzetek
-
9. Git in drugi sistemi
- 9.1 Git kot klient
- 9.2 Migracija na Git
- 9.3 Povzetek
-
10. Notranjost Git-a
- 10.1 Napeljava in porcelan
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Povzetek
-
A1. Appendix A: Git v drugih okoljih
- A1.1 Grafični vmesniki
- A1.2 Git v Visual Studiu
- A1.3 Git v Eclipse
- A1.4 Git V Bash-u
- A1.5 Git v Zsh
- A1.6 Git v Powershell-u
- A1.7 Povzetek
-
A2. Appendix B: Vključevanje Git-a v vašo aplikacijo
- A2.1 Git v ukazni vrstici
- 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 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.