-
1. Kom igång
- 1.1 Om versionshantering
- 1.2 En kort historik om Git
- 1.3 Vad är Git?
- 1.4 Kommandoraden
- 1.5 Installera Git
- 1.6 Första gången med Git
- 1.7 Få hjälp
- 1.8 Sammanfattning
-
2. Grunderna i Git
- 2.1 Att få tag i ett Git‑kodförråd
- 2.2 Spara ändringar i kodförrådet
- 2.3 Visa incheckningshistoriken
- 2.4 Ångra saker
- 2.5 Arbeta med fjärrkodförråd
- 2.6 Att tagga
- 2.7 Git-alias
- 2.8 Sammanfattning
-
3. Git-grenar
- 3.1 Grenar i korthet
- 3.2 Grundläggande gren- och sammanfogningsarbete
- 3.3 Grenhantering
- 3.4 Arbetsflöden med grenar
- 3.5 Fjärrgrenar
- 3.6 Ombasering
- 3.7 Sammanfattning
-
4. Git på servern
- 4.1 Protokollen
- 4.2 Konfigurera Git på en server
- 4.3 Generera din publika SSH-nyckel
- 4.4 Konfigurera servern
- 4.5 Git-demon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Tredjepartsalternativ
- 4.10 Sammanfattning
-
5. Distribuerat Git
-
6. GitHub
-
7. Git-verktyg
- 7.1 Revisionsurval
- 7.2 Interaktiv köläggning
- 7.3 Lägga undan och städa
- 7.4 Signera ditt arbete
- 7.5 Sökning
- 7.6 Skriva om historik
- 7.7 Nollställning förklarad
- 7.8 Avancerad sammanslagning
- 7.9 Rerere
- 7.10 Felsöka med Git
- 7.11 Undermoduler
- 7.12 Bunta
- 7.13 Ersätt
- 7.14 Lagring av inloggningsuppgifter
- 7.15 Sammanfattning
-
8. Anpassa Git
- 8.1 Git‑konfiguration
- 8.2 Git‑attribut
- 8.3 Git‑krokar
- 8.4 Ett exempel på Git‑upprätthållen policy
- 8.5 Sammanfattning
-
9. Git och andra system
- 9.1 Git som klient
- 9.2 Migrera till Git
- 9.3 Sammanfattning
-
10. Git bakom kulisserna
- 10.1 Lågnivådel och användardel
- 10.2 Git-objekt
- 10.3 Git-referenser
- 10.4 Packfiler
- 10.5 Refspecen
- 10.6 Överföringsprotokoll
- 10.7 Underhåll och dataåterställning
- 10.8 Miljövariabler
- 10.9 Sammanfattning
-
A1. Bilaga A: Git i andra miljöer
- A1.1 Grafiska gränssnitt
- A1.2 Git i Visual Studio
- A1.3 Git i Visual Studio Code
- A1.4 Git i IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git i Sublime Text
- A1.6 Git i Bash
- A1.7 Git i Zsh
- A1.8 Git i PowerShell
- A1.9 Sammanfattning
-
A2. Bilaga B: Bädda in Git i dina applikationer
- A2.1 Git på kommandoraden
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Bilaga C: Git-kommandon
- A3.1 Uppstart och konfiguration
- A3.2 Skaffa och skapa projekt
- A3.3 Grundläggande ögonblicksbilder
- A3.4 Grening och sammanslagning
- A3.5 Dela och uppdatera projekt
- A3.6 Inspektion och jämförelse
- A3.7 Felsökning
- A3.8 Patchning
- A3.9 E‑post
- A3.10 Externa system
- A3.11 Administration
- A3.12 Lågnivåkommandon
2.6 Grunderna i Git - Att tagga
Att tagga
Precis som de flesta VCS:er kan Git tagga särskilda punkter i ett kodförråds historik.
Vanligtvis används detta för att markera utgåvor (v1.0, v2.0 och så vidare).
I det här avsnittet lär du dig hur du listar befintliga taggar, hur du skapar och tar bort dem, samt vilka typer av taggar som finns.
Lista taggar
Att lista taggar i Git är enkelt.
Skriv bara git tag (med valfria -l eller --list):
$ git tag
v1.0
v2.0
Kommandot listar taggarna i alfabetisk ordning; ordningen är inte särskilt viktig.
Du kan också söka efter taggar som matchar ett visst mönster. Gits källkodskodförråd innehåller till exempel fler än 500 taggar. Om du bara är intresserad av serien 1.8.5 kan du köra:
$ 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
|
Listning med jokertecken kräver
-l eller --list
Om du bara vill ha hela listan räcker |
Skapa taggar
Git stödjer två typer av taggar: lättviktiga och kommenterade.
En lättviktig tagg är ungefär som en gren som aldrig flyttar sig – den är bara en pekare till en viss incheckning.
Annoterade taggar lagras däremot som fullvärdiga objekt i Git-databasen. De får en kontrollsumma, innehåller taggarens namn, e-post och datum, har ett taggmeddelande och kan signeras och verifieras med GNU Privacy Guard (GPG). Det rekommenderas i regel att du skapar annoterade taggar för att få all denna information; men om du vill ha en tillfällig tagg eller inte vill spara den extra informationen finns lättviktiga taggar.
Kommenterade taggar
Att skapa en annoterad tagg i Git är enkelt.
Det lättaste är att ange -a när du kör git tag:
$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4
Flaggan -m anger taggmeddelandet som sparas tillsammans med taggen.
Om du inte anger ett meddelande för en annoterad tagg startar Git din textredigerare så att du kan skriva in det.
Du kan se taggdata tillsammans med incheckningen som taggades genom 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
Change version number
Det visar taggarens information, datumet då incheckningen taggades och taggmeddelandet innan incheckningen visas.
Lättviktiga taggar
Ett annat sätt att tagga incheckningar är en lättviktig tagg.
Det är i praktiken bara kontrollsumman för incheckningen lagrad i en fil – ingen annan information lagras.
För att skapa en lättviktig tagg utelämnar du -a, -s och -m och anger bara ett taggnamn:
$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5
Om du den här gången kör git show på taggen ser du ingen extra tagginformation.
Kommandot visar bara incheckningen:
$ git show v1.4-lw
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
Change version number
Tagga i efterhand
Du kan också tagga incheckningar i efterhand. Anta att din historik ser ut så här:
$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 Create write support
0d52aaab4479697da7686c15f77a3d64d9165190 One more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc Add commit function
4682c3261057305bdd616e23b64b0857d832627b Add todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a Create write support
9fceb02d0ae598e95dc970b74767f19372d61af8 Update rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc Commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a Update readme
Anta att du glömde tagga projektet vid v1.2, som låg på incheckningen "Update rakefile". Du kan lägga till den i efterhand. För att tagga den incheckningen anger du kontrollsumman (eller en del av den) i slutet av kommandot:
$ git tag -a v1.2 9fceb02
Du kan se att incheckningen är 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
Update rakefile
...
Dela taggar
Som standard skickar git push inte taggar till fjärrservrar.
Du måste uttryckligen skicka taggar efter att du skapat dem.
Processen är densamma som för fjärrgrenar – du kan köra git push origin <taggnamn>.
$ 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 du vill skicka samtidigt kan du ange --tags till git push.
Detta skickar alla dina taggar som ännu inte finns på servern.
$ 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 data från fjärrkodförrådet får de med dina taggar.
|
Notera
|
git push skickar båda typer av taggarAtt skicka taggar med |
Ta bort taggar
För att ta bort taggar i ditt lokala kodförråd använder du git tag -d <taggnamn>.
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ärrkodförråd. Det finns två vanliga sätt att ta bort taggar från fjärrkodförråd.
Det första ä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 tolkas som att null-värdet före kolon skickas till serverns taggnamn, vilket i praktiken tar bort taggen.
Det andra (och mer intuitiva) sättet att ta bort en tagg i fjärrkodförrådet är:
$ git push origin --delete <tagname>
Ta ut taggar
Om du vill se versionen av filerna som en tagg pekar på kan du köra git checkout på taggen.
Ditt kodförråd hamnar då i tillståndet "detached HEAD", vilket 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 "frikopplad HEAD"-läget kan du göra ändringar och spara incheckningar som vanligt, men taggen flyttas inte och dina incheckningar tillhör ingen gren och blir därför i praktiken svåra att nå, förutom via sina kontrollsummor. Om du vill göra ändringar – till exempel åtgärda ett programfel i en gammal version – bör du skapa en gren:
$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'
Om du gör detta och sedan checkar in kommer grenen version2 att skilja sig från taggen v2.0.0 eftersom den flyttar sig framåt med dina ändringar, så var försiktig.