Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.53.0 no changes
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 no changes
-
2.51.0
2025-08-18
- 2.43.1 → 2.50.1 no changes
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 no changes
-
2.42.0
2023-08-21
- 2.39.1 → 2.41.3 no changes
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 no changes
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 no changes
-
2.35.0
2022-01-24
- 2.32.1 → 2.34.8 no changes
-
2.32.0
2021-06-06
- 2.31.1 → 2.31.8 no changes
-
2.31.0
2021-03-15
- 2.26.1 → 2.30.9 no changes
-
2.26.0
2020-03-22
- 2.24.1 → 2.25.5 no changes
-
2.24.0
2019-11-04
- 2.23.1 → 2.23.4 no changes
-
2.23.0
2019-08-16
- 2.22.1 → 2.22.5 no changes
-
2.22.0
2019-06-07
- 2.17.1 → 2.21.4 no changes
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
- 2.15.4 no changes
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
-
2.11.4
2017-09-22
- 2.8.6 → 2.10.5 no changes
-
2.7.6
2017-07-30
- 2.1.4 → 2.6.7 no changes
-
2.0.5
2014-12-17
SYNOPSIS
gitstashlist[<logg-flaggor>]gitstashshow[-u|--include-untracked|--only-untracked] [<diff-flaggor>] [<gömma>]gitstashdrop[-q|--quiet] [<gömma>]gitstashpop[--index] [-q|--quiet] [<gömma>]gitstashapply[--index] [-q|--quiet] [<gömma>]gitstashbranch<branchname> [<gömma>]gitstash[push[-p|--patch] [-S|--staged] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all] [(-m|--message) <meddelande>] [--pathspec-from-file=<fil> [--pathspec-file-nul]] [--] [<sökvägsmönster>…]]gitstashsave[-p|--patch] [-S|--staged] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all] [<meddelande>]gitstashcleargitstashcreate[<meddelande>]gitstashstore[(-m|--message) <meddelande>] [-q|--quiet] <incheckning>gitstashexport(--to-ref<ref>) [<gömma>…]gitstashimport<incheckning>
BESKRIVNING
Använd git stash när du vill registrera arbetskatalogens och indexets aktuella tillstånd, men vill gå tillbaka till en ren arbetskatalog. Kommandot sparar dina lokala ändringar och återställer arbetskatalogen så att den matchar HEAD-incheckningen.
De modifieringar som lagras av detta kommando kan listas med git stash list, inspekteras med git stash show och återställas (eventuellt ovanpå en annan incheckning) med git stash apply. Att anropa git stash utan några argument är likvärdigt med git stash push. En stash listas som standard som "WIP on <grennamn> …", men du kan ge ett mer beskrivande meddelande på kommandoraden när du skapar en.
Den senaste gömman du skapade lagras i refs/stash; äldre gömmor finns i refloggen för denna referens och kan namnges med den vanliga reflogsyntaxen (t.ex. stash@{0} är den senast skapade gömman, stash@{1} är den föregående, stash@{2.hours.ago} är också möjligt). Stash kan också refereras genom att bara ange stashindexet (t.ex. heltalet <n> är ekvivalent med stash@{<n>}).
KOMMANDON
-
push[-p|--patch] [-S|--staged] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [(-m|--message) <sökvägsmönster>] [--pathspec-from-file=<fil> [--pathspec-file-nul]] [--] [<sökvägsmönster>...] -
Spara dina lokala ändringar till en ny gömd post och rulla tillbaka dem till
HEAD(i arbetsträdet och i indexet). <meddelande>-delen är valfri och ger beskrivningen tillsammans med det lagrade tillståndet.För att snabbt skapa en ögonblicksbild kan du utelämna "push". I det här läget är argument som inte är alternativ inte tillåtna för att förhindra att ett felstavat delkommando skapar en oönskad gömd post. De två undantagen från detta är
stash-psom fungerar som alias förstashpush-poch sökvägsmönster-poster, vilka är tillåtna efter ett dubbelt bindestreck--för särskiljning. -
save[-p|--patch] [-S|--staged] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<meddelande>] -
Det här alternativet är föråldrat till förmån för git stash push. Det skiljer sig från "stash push" genom att det inte kan ta sökvägsmönster. I stället sammanfogas alla argument som inte är alternativ för att bilda gömma-meddelandet.
-
list[<logg-flaggor>] -
Lista de gömda poster du för närvarande har. Varje gömd post listas med sitt namn (t.ex.
stash@{0}är den senaste posten,stash@{1}är den föregående, etc.), namnet på den gren som var aktuell när posten gjordes och en kort beskrivning av den incheckning som posten baserades på.stash@{0}: WIP on submit: 6ebd0e2... Uppdatera git-stash-dokumentationen stash@{1}: On master: 9cc0589... Lägg till git-stashKommandot tar alternativ som är tillämpliga på kommandot git log för att kontrollera vad som visas och hur. Se git-log[1].
-
show[-u|--include-untracked|--only-untracked] [<diff-flaggor>] [<gömma>] -
Visa ändringarna som registrerats i den gömda posten som en skillnad mellan det undangömda innehållet och incheckningen från den tidpunkt då den gömda posten först skapades. Som standard visar kommandot diffstat, men det accepterar alla format som är kända för git diff (t.ex.
gitstashshow-pstash@{1}för att visa den näst senaste posten i patch-format). Om inget <diff-alternativ> anges kommer standardbeteendet att ges av konfigurationsvariablernastash.showStatochstash.showPatch. Du kan också användastash.showIncludeUntrackedför att ange om--include-untrackedär aktiverat som standard. -
pop[--index] [-q|--quiet] [<gömma>] -
Ta bort ett enskilt tillstånd från gömman och tillämpa det ovanpå det aktuella tillståndet i arbetsträdet, d.v.s. utför den omvända operationen till
gitstashpush. Arbetskatalogen måste matcha indexet.Att tillämpa tillståndet kan misslyckas vid konflikter; i det här fallet tas det inte bort från gömma-listan. Du måste lösa konflikterna manuellt och anropa
gitstashdropmanuellt efteråt. -
apply[--index] [-q|--quiet] [<gömma>] -
Som
pop, men ta inte bort tillståndet från gömma-listan. Till skillnad frånpopkan <stash> vara vilken incheckning som helst som ser ut som en incheckning skapad avstashpushellerstashcreate. -
branch<grennamn> [<gömma>] -
Skapar och checkar ut en ny gren med namnet <grennamn> med början från den incheckning där <gömman> ursprungligen skapades, tillämpar ändringarna som registrerats i <gömman> på det nya arbetsträdet och indexet. Om det lyckas, och <gömman> är en referens av formen
stash@{<revision>}, tas <gömman> bort.Det är användbart om grenen där du kör
gitstashpushhar ändrats tillräckligt för attgitstashapplymisslyckas på grund av konflikter. Eftersom den gömda posten tillämpas ovanpå incheckningen som var HEAD närgitstashkördes, återställer den det ursprungligen gömda tillståndet utan konflikter. -
clear -
Ta bort alla poster i gömman. Observera att dessa poster sedan kommer att bli föremål för rensning och kan vara omöjliga att återställa (se EXEMPEL nedan för en möjlig strategi).
-
drop[-q|--quiet] [<gömma>] -
Ta bort en enskild post från listan över gömda poster.
-
create -
Skapa en gömd post (som är ett vanligt incheckningsobjekt) och returnera dess objektnamn, utan att lagra den någonstans i ref-namnrymden. Detta är tänkt att vara användbart för skript. Det är förmodligen inte det kommando du vill använda; se "push" ovan.
-
store -
Lagra en given gömma som skapats via git stash create (vilket är en dinglande sammanslagningsincheckning) i gömmereferensen och uppdatera gömmerefloggen. Detta är tänkt att vara användbart för skript. Det är förmodligen inte det kommando du vill använda; se "push" ovan.
-
export(--print|--to-ref<ref> ) [<gömma>...] -
Exportera de angivna gömmorna, eller alla om inga anges, till en kedja av incheckningar som kan överföras med de vanliga hämtnings- och push-mekanismerna, och sedan importeras med underkommandot
import. -
import<incheckning> -
Importera de angivna gömmorna från den angivna incheckningen, som måste ha skapats av
export, och lägg till dem i listan över gömmor. För att ersätta de befintliga gömmorna, användclearförst.
ALTERNATIV
-
-a -
--all -
Det här alternativet är endast giltigt för kommandona
pushochsave.Alla ignorerade och ospårade filer lagras också och rensas sedan upp med
gitclean. -
-u -
--include-untracked -
--no-include-untracked -
När de används med kommandona
pushochsave, lagras även alla ospårade filer och rensas sedan upp medgitclean.När det används med kommandot
showvisas de ospårade filerna i den gömda posten som en del av diffen. -
--only-untracked -
Det här alternativet är endast giltigt för kommandot
show.Visa endast de ospårade filerna i den gömda posten som en del av diffen.
-
--index -
Det här alternativet är endast giltigt för kommandona
popochapply.Försöker återställa inte bara arbetsträdets-ändringar, utan även indexets. Detta kan dock misslyckas när det finns konflikter (som lagras i indexet, där du därför inte längre kan tillämpa ändringarna som de ursprungligen var).
-
-k -
--keep-index -
--no-keep-index -
Det här alternativet är endast giltigt för kommandona
pushochsave.Alla ändringar som redan har lagts till i indexet lämnas intakta.
-
-p -
--patch -
Det här alternativet är endast giltigt för kommandona
pushochsave.Välj interaktivt stycken från diffen mellan HEAD och arbetsträdet som ska gömmas. Den gömda posten byggs så att dess indextillstånd är samma som indexets tillstånd i ditt kodförråd, och dess arbetsträd innehåller bara de ändringar du valde interaktivt. De valda ändringarna rullas sedan tillbaka från arbetsträdet. Se avsnittet “Interactive Mode” i git-add[1] för hur läget
--patchanvänds.Alternativet
--patchinnebär--keep-index. Du kan använda--no-keep-indexför att åsidosätta detta. -
-U<n> -
--unified=<n> -
Generate diffs with <n> lines of context. Defaults to
diff.contextor 3 if the config option is unset. -
--inter-hunk-context=<n> -
Visar sammanhanget mellan olika stycken, upp till det angivna <antal> rader, och sammanfogar därmed stycken som ligger nära varandra. Standardvärdet är
diff.interHunkContexteller 0 om konfigurationsalternativet inte är inställt.
-
-S -
--staged -
Det här alternativet är endast giltigt för kommandona
pushochsave.Lagra endast de ändringar som för närvarande är pågående. Detta liknar grundläggande
gitcommitförutom att tillståndet är incheckat till gömman i stället för den aktuella grenen.Alternativet
--patchhar prioritet framför detta. -
--pathspec-from-file=<fil> -
Det här alternativet är endast giltigt för kommandot
push.Sökvägsmönster skickas i <fil> i stället för kommandoradsargument. Om <fil> är exakt
-används standardindata. Sökvägsmönster-poster separeras med LF eller CR/LF. Sökvägsmönster-poster kan citeras enligt beskrivningen för konfigurationsvariabelncore.quotePath(se git-config[1]). Se även--pathspec-file-nuloch global--literal-pathspecs. -
--pathspec-file-nul -
Det här alternativet är endast giltigt för kommandot
push.Endast meningsfullt med
--pathspec-from-file. Sökvägsmönster-poster separeras med NUL-tecken och alla andra tecken tolkas bokstavligt (inklusive radbrytningar och citattecken). -
-q -
--quiet -
Det här alternativet är endast giltigt för kommandona
apply,drop,pop,push,saveochstore.Tyst, undertryck feedbackmeddelanden.
-
--print -
Det här alternativet är endast giltigt för kommandot
export.Skapa kedjan av incheckningar som representerar de exporterade gömma-filerna utan att lagra den någonstans i referensnamnrymden och skriv ut objekt-ID:t till standardutdata. Detta är utformat för skript.
-
--to-ref -
Det här alternativet är endast giltigt för kommandot
export.Skapa kedjan av incheckningar som representerar de exporterade gömma-filerna och lagra den till den angivna referensen.
-
-- -
Det här alternativet är endast giltigt för kommandot
push.Separerar sökvägsmönster från alternativ för särskiljnings-ändamål.
- <sökvägsmönster>...
-
Det här alternativet är endast giltigt för kommandot
push.Den nya gömda posten registrerar de modifierade tillstånden endast för de filer som matchar sökvägsmönstret. Indexposterna och arbetsträdsfilerna rullas sedan tillbaka till tillståndet i HEAD endast för dessa filer också, vilket lämnar filer som inte matchar sökvägsmönstret intakta.
För mer information, se posten sökvägsmönster i gitglossary[7].
- <gömma>
-
Det här alternativet är endast giltigt för kommandona
apply,branch,drop,pop,showochexport.En referens av formen
stash@{<revision>}. När ingen <gömma> anges antas den senaste gömma (det vill sägastash@{0}).
DISKUSSION
En gömd post representeras som en incheckning vars träd registrerar arbetskatalogens tillstånd, och dess första förälder är incheckning vid HEAD när posten skapades. Trädet för den andra föräldern registrerar indexets tillstånd när posten görs, och den görs till ett barn till HEAD-incheckning. Härkomstgrafer ser ut så här:
.----W
/ /
-----H----I
där H är HEAD-incheckningen, I är en incheckning som registrerar indexets tillstånd och W är en incheckning som registrerar arbetsträdets tillstånd.
EXEMPEL
- Drar in ("hämta") i ett smutsigt träd
-
När du är mitt uppe i något lär du dig att det finns förändringar uppströms som eventuellt är relevanta för det du gör. När dina lokala ändringar inte står i konflikt med ändringarna uppströms, kommer en enkel "git pull" att låta dig gå vidare.
Det finns dock fall där dina lokala ändringar står i konflikt med ändringarna uppströms, och
gitpullvägrar att skriva över dina ändringar. I sådana fall kan du lagra dina ändringar, utföra en pull och sedan plocka ur gömman, så här:$ git pull ... fil-foobarn är inte uppdaterad, kan inte slås samman. $ git stash $ git pull $ git stash pop
- Avbrutet arbetsflöde
-
När du är mitt uppe i något kommer din chef in och kräver att du åtgärdar något omedelbart. Traditionellt sett skulle du göra en incheckning till en tillfällig gren för att lagra dina ändringar och återgå till din ursprungliga gren för att göra den akuta åtgärden, så här:
# ... hack hack hack ... $ git switch -c my_wip $ git commit -a -m "WIP" $ git switch master $ edit emergency fix $ git commit -a -m "Fixa snabbt" $ git switch my_wip $ git reset --soft HEAD^ # ... fortsätta hacka ...
Du kan använda git stash för att förenkla ovanstående, så här:
# ... hack hack hack ... $ git stash $ edit emergency fix $ git commit -a -m "Fixa snabbt" $ git stash pop # ... fortsätta hacka ...
- Testa partiella incheckningar
-
Du kan använda
gitstashpush--keep-indexnär du vill göra två eller fler incheckningar från ändringarna i arbetsträdet, och du vill testa varje ändring innan du checkar-in:#... hack hack hack... $ git add --patch foo # lägg bara till den första delen i indexet $ git stash push --keep-index # spara alla andra ändringar i gömman $edit/build/test första delen $ git commit -m 'Första delen' # incheckning fullständigt testad ändring $ git stash pop # förbered dig för att arbeta med alla andra ändringar # ... upprepa ovanstående fem steg tills en incheckning återstår ... $edit/build/test återstående delar $ git commit foo -m 'Återstående delar'
- Spara orelaterade ändringar för framtida bruk
-
När du är mitt uppe i stora förändringar och hittar något orelaterat problem som du inte vill glömma att åtgärda, kan du göra ändringen/ändringarna, köa dem och använda
gitstashpush--stagedför att lagra dem för framtida bruk. Detta liknar att checka in de köade ändringarna, bara det att incheckningen hamnar i gömman och inte på den aktuella grenen.#... hack hack hack... $ git add --patch foo # lägg till orelaterade ändringar i indexet $ git stash push --staged # spara dessa ändringar i gömman # ... hack hack hack, avsluta aktuella ändringar ... $ git commit -m 'Massive' # incheckning fullt testade ändringar $ git switch fixup-branch # växla till en annan gren $ git stash pop # för att avsluta arbetet med de sparade ändringarna
- Återställning av gömda poster som felaktigt rensats eller tappats
-
Om du av misstag tappar eller rensar gömda poster kan de inte återställas via de vanliga säkerhetsmekanismerna. Du kan dock prova följande besvärjelse för att få en lista över gömda poster som fortfarande finns i ditt kodförråd, men som inte längre är nåbara:
git fsck --unreachable | grep commit | cut -d\ -f3 | xargs git log --merges --no-walk --grep=WIP
KONFIGURATION
Allt under den här raden i det här avsnittet är selektivt inkluderat från dokumentationen git-config[1]. Innehållet är detsamma som det som finns där:
-
stash.index -
Om detta är satt till sant, kommer
gitstashapplyochgitstashpopatt bete sig som om--indexangavs. Standardvärdet är falskt. -
stash.showIncludeUntracked -
Om detta är satt till sant, kommer kommandot
gitstashshowatt visa de ospårade filerna från en gömma-post. Standardvärdet är falskt. -
stash.showPatch -
Om detta är satt till sant, kommer kommandot
gitstashshowutan ett alternativ att visa gömma-posten i patch-format. Standardvärdet är falskt. -
stash.showStat -
Om detta är satt till sant, kommer kommandot
gitstashshowutan ett alternativ att visa en diffstat för gömma-posten. Standardinställningen är sant.
GIT
En del av git[1]-sviten