Git Stash forklaret: Hvordan man midlertidigt gemmer lokale ændringer i Git

Git har et område kaldet stash, hvor du midlertidigt kan gemme et øjebliksbillede af dine ændringer uden at forpligte dem til arkivet. Det er adskilt fra arbejdsmappen, iscenesættelsesområdet eller arkivet.

Denne funktionalitet er nyttig, når du har foretaget ændringer i en gren, som du ikke er klar til at begå, men du skal skifte til en anden gren.

Stash-ændringer

For at gemme dine ændringer i stash skal du køre kommandoen:

git stash save "optional message for yourself"

Dette gemmer dine ændringer og vender arbejdskataloget tilbage til, hvordan det så ud til den seneste forpligtelse. Stashed-ændringer er tilgængelige fra enhver gren i det arkiv.

Bemærk, at ændringer, du vil gemme, skal være på sporede filer. Hvis du oprettede en ny fil og forsøger at gemme dine ændringer, kan du få fejlen No local changes to save.

Se stashed Changes

For at se, hvad der er i din stash, skal du køre kommandoen:

git stash list

Dette returnerer en liste over dine gemte snapshots i formatet [email protected]{0}: BRANCH-STASHED-CHANGES-ARE-FOR: MESSAGE. Den [email protected]{0}del er navnet på den stash, og antallet i de krøllede parenteser ( { }) er indekset for at stash. Hvis du har flere ændringssæt gemt, vil hver have et andet indeks.

Hvis du har glemt, hvilke ændringer der blev foretaget i lageret, kan du se et resumé af dem med git stash show NAME-OF-STASH. Hvis du vil se det typiske diff-patch patchlayout (med +'erne og -erne for line-by-line ændringer), kan du medtage muligheden -p(for patch). Her er et eksempel:

git stash show -p [email protected]{0} # Example result: diff --git a/PathToFile/fileA b/PathToFile/fileA index 2417dd9..b2c9092 100644 --- a/PathToFile/fileA +++ b/PathToFile/fileA @@ -1,4 +1,4 @@ -What this line looks like on branch +What this line looks like with stashed changes

Hent stashede ændringer

For at hente ændringer ud af stashet og anvende dem på den aktuelle gren, du er i, har du to muligheder:

  1. git stash apply STASH-NAME anvender ændringerne og efterlader en kopi i lageret
  2. git stash pop STASH-NAME anvender ændringerne og fjerner filerne fra stashet

Der kan være konflikter, når du anvender ændringer. Du kan løse konflikter svarende til en fusion (se git mergefor detaljer).

Slet stashed Changes

Hvis du vil fjerne stashede ændringer uden at anvende dem, skal du køre kommandoen:

git stash drop STASH-NAME

For at rydde hele stashet skal du køre kommandoen:

git stash clear