-
1. Kom igÄng
- 1.1 Om versionshantering
- 1.2 En kort historik av Git
- 1.3 Vad Àr Git?
- 1.4 Kommandoraden
- 1.5 Installera Git
- 1.6 AnvÀnda Git för första gÄngen
- 1.7 FÄ hjÀlp
- 1.8 Sammanfattning
-
2. Grunder i Git
- 2.1 Skaffa ett Git-förvar
- 2.2 Spara Àndringar till förvaret
- 2.3 Visa historiken
- 2.4 Ă ngra saker
- 2.5 Jobba med fjÀrrförvar
- 2.6 Taggning
- 2.7 Git alias
- 2.8 Sammanfattning
-
3. Git förgreningar
-
4. Git pÄ servern
- 4.1 Protokollen
- 4.2 Skaffa Git pÄ en server
- 4.3 Generera din publika SSH-nyckel
- 4.4 Konvigurera servern
- 4.5 Git Daemonen
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Alternativ tillhandahÄllna av tredje part
- 4.10 Sammanfattning
-
5. Distribuerade Git
-
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. Customizing Git
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
- 10.1 Plumbing and Porcelain
- 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 Summary
-
A1. Bilaga 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. Bilaga B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Bilaga 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 Grunder i Git - Taggning
Taggning
Likt de flesta versionshanteringssystem har Git möjligheten att tagga en specifik punkt i ett förvars historik som viktig.
Typiskt anvÀnder folk denna funktionaliteten för att markera frislÀppt version (v1.0
, v2.0
och sÄ vidare).
I detta avsnitt kommer du lÀra dig hur man listar existerande taggar, att skapa och ta bort taggar, samt vilka olika typer av taggar som finns.
Lista dina taggar
Att list existerande taggar i Git Àr rÀttframt.
Skriv bara git tag
(med valfri -l
eller --list
):
$ git tag
v1.0
v2.0
Kommandot listar taggarna i alfabetisk ordning; ordningen i vilken de stÄr spelar ingen roll.
Du kan ocksÄ söka efter taggar som matchar ett specifikt mönster. Gits eget kÀllkodsförvar innehÄller till exempel mer Àn 500 taggar. Om du Àr intresserad av serien 1.8.5 kan du göra sÄhÀr:
$ 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
Notera
|
Lista taggar med jokertecken krÀver flaggan
-l eller --list
Om du bara vill ha hela listan över taggar, antar kommandot Om du dÀremot vill lista med jokertecken för att matcha taggnamn mÄste du anvÀnda |
Skapa taggar
Git stödjer tvÄ typer av taggar: lÀttviktig och kommenterad.
En lĂ€ttviktig tagg Ă€r vĂ€ldigt lik en gren som inte Ă€ndrasâââdet Ă€r bara en pekare till en specifik ögonblicksbild/version.
Kommenterade taggar dÀremot, sparas som fullvÀrdiga objekt i Git-databasen. De förses med en checksumma; innehÄller namnet pÄ den som taggat, e-post och tidsstÀmpel; har ett taggningsmeddelande och kan signeras med GNU Privacy Guard (GPG). Generellt rekommenderas att du skapar en kommenterad tagg sÄ att du kan ha all denna information, men om du bara vill ha en temporÀr tagg eller av nÄgon anledning inte vill ha informationen, sÄ kan du anvÀnda lÀttviktiga taggar.
Kommenterade taggar
Att skapa en kommenterad tagg i Git Àr enkelt.
Enklast Àr att specificera -a
nÀr du kör kommandot tag
:
$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4
Flaggan -m
specificerar taggningsmeddelandet som sparas tillsamans med taggen.
Om du inte specificerar ett meddelande för din kommenterade tagg, startar Git din editor sÄ att du kan skriva in det.
Du kan se taggdata tillsammans med ögonblicksbilden som blev taggad genom kommandot 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
Den visar tagginformation, tidsstÀmpeln för dÄ ögonblicksbilden taggades, och meddelandet innan den visar informationen om ögonblicksbilden.
LĂ€ttviktiga taggar
Ett annat sÀtt att tagga ögonblicksbilder Àr en lÀttviktig tagg.
Det Ă€r i grunden checksumman för ögonblicksbilden sparad i en filâââingen annan information sparas.
För att skapa en lÀttviktig tagg, sÄ utelÀmnar du bara vÀxlarna -a
, -s
, eller -s
, ange bara ett taggnamn:
$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5
Om du denna gÄng kör git show
pÄ taggen sÄ kommer du inte se nÄgon extra tagginformation.
Kommandot visar bara ögonblicksbilden:
$ 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
Tagga senare
Du kan Àven tagga ögonblicksbilder efter att du flyttat förbi dem. Anta att din versionshistorik ser ut sÄhÀr:
$ 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
Anta att du glömt tagga projetet vid v1.2 som var vid versionen âupdated rakefileâ. Du kan lĂ€gga till den efterĂ„t. För att tagga den ögonblicksbilden, sĂ„ specificerar du checksumman (eller en del av den) i slutet av kommandot:
$ git tag -a v1.2 9fceb02
Du kan nu se att versionen blivit taggad:
$ 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
...
Dela taggar
Normalt skickas inte taggar till fjÀrrförvar nÀr du kör git push
.
Du mÄste uttryckligen skicka upp taggar till en delad server efter att du skapat dem.
Processen Ă€r densamma som för att dela fjĂ€rrgrenarâââdu kan köra 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
Om du har mÄnga taggar som du vill skicka upp samtidig, kan du ocksÄ ange vÀxeln --tags
till kommandot git push
.
Detta kommer att skicka alla dina taggar till servern som inte redan finns dÀr.
$ 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
Nu, om nÄgon annan klonar eller hÀmtar hem data frÄn fjÀrrförvaret kommer de fÄ med dina taggar ocksÄ.
Notera
|
git push skickar bÄda typer av taggarAtt skicka taggar med |
Ta bort taggar
För att ta bort taggar i ditt lokala förvar sÄ anvÀnder du git tag -d <tagname>
.
Du kan till exempel ta bort vÄr lÀttviktiga tagg sÄhÀr:
$ git tag -d v1.4-lw
Deleted tag 'v1.4-lw' (was e7d5add)
Notera att detta inte tar bort taggen frÄn nÄgra fjÀrrförvar. Det finns tvÄ vanliga sÀtt att ta boort taggar frÄn fjÀrrförvar.
Den första sÀttet Àr git push <fjÀrrnamn> :refs/tags/<taggnamn>
:
$ git push origin :refs/tags/v1.4-lw
To /git@github.com:schacon/simplegit.git
- [deleted] v1.4-lw
OvanstÄende skall tolkas som att null-vÀrdet före kolonet skickas till serverns taggnamn, vilket i praktiken tar bort taggen.
Det andra (och mer intiutiva) sÀttet att ta bort en tagg i fjÀrrförvaret Àr med:
$ git push origin --delete <taggnamn>
Checka ut taggar
Om du vill visa versionenra av filerna som en tagg pekar pÄ kan du köra git checkout
pĂ„ den taggen. Ditt förvar försĂ€tts dĂ„ i tillstĂ„ndet âdetached HEADâ, som har nĂ„gra bieffekter:
$ 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
I tillstĂ„ndet âdetached HEADâ kan du göra Ă€ndringar och spara versioner som vanligt, men taggen kommer inte att Ă€ndras och dina sparade versioner kommer inte att tillhöra nĂ„gon gren och dĂ€rför vara praktiskt onĂ„bara, förutom via sina checksummor. SĂ„ om du vill göra Ă€ndringarâââtill exempel fixa en bugg i en gammal versionâââsĂ„ vill du skapa en gren:
$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'
Om du gör detta och sedan sparar en version, kommer din gren version2
att skilja sig frÄn din tagg v2.0.0
eftersom den kommer att flyttas fram tillsammans med dina Àndringar, sÄ var försiktig.