Git

Git Stash med navn

Git Stash med navn

Sådan får du stash dine ændringer med tilknyttet navn og finder det bagefter

Udviklere skal ofte multitaske. Du arbejder muligvis på en ny funktion, og der kan være en anmodning om at rette en fejl. Eller du kan være hovedudvikler på flere projekter.

Når du skifter mellem opgaver, ønsker du nogle gange ikke at udføre ufærdigt arbejde. I disse tilfælde kan kommandoen git stash være en stor hjælp. Det giver dig mulighed for at stable dine ændringer og senere vende tilbage til det ufærdige arbejde uden at tilføje unødvendige forpligtelser til dine git-arkiver.

En arbejdsgang til Git Stash

Lad os initialisere en git-masterfilial og begå en fil ReadMe.txt.

$ mkdir my_project
$ cd my_project /
$ git init
$ tryk på ReadMe.txt
$ git add -A
$ git commit -m "Initialiser"

Lad os nu tilføje en anden fil kaldet a.txt til mastergrenen.

$ touch a.txt
$ git add -A
$ git commit -m "Tilføjet en.txt "

Hvis du tjekker historikken, ser du:

$ git log - online
d79f7aa Tilføjet en.txt
9434d7e Initialiser

Lad os nu oprette en feature1-gren og tilføje en b.txt-fil:

$ git filialfunktion1
$ git checkout-funktion 1
$ touch b.txt
$ git add -A
$ git commit -m "Tilføjet b.txt "

Åbn din b.txt-fil i en editor og sæt i linjen:

Jeg er ved at ændre dette til ..

Og gem filen. Hvis du kontrollerer din git-status, ser du følgende:

$ git status
Om filialfunktion1
Ændringer, der ikke er iscenesat for forpligtelse:
(brug "git add ... "for at opdatere, hvad der vil blive begået)
(brug "git checkout -- ... "for at kassere ændringer i arbejdskataloget)
 
ændret: b.txt
 
ingen ændringer tilføjet til commit (brug "git add" og / eller "git commit -a")

Antag, at du på dette tidspunkt får en anmodning om at opdatere a.txt-fil på mastergrenen. Men du er ikke færdig med b.txt-fil. Hvis du prøver at tjekke mastergrenen, får du følgende fejl:

$ git checkout master
fejl: Dine lokale ændringer af følgende filer overskrives ved kassen:
b.txt
Foretag dine ændringer, eller gem dem, inden du kan skifte filial.
Afbryder

Men du vil ikke begå det ufærdige arbejde i b.txt. Du kan bruge git stash i denne situation:

$ git stash
Gemt arbejdskatalog og indekstilstand WIP på funktion1: 2cfe39b Tilføjet b.txt
HEAD er nu på 2cfe39b Tilføjet b.txt

Hvis du markerer b.txt, den skal være tom:

$ kat b.txt
$

Hvis du tjekker stashet, vil du se:

$ git stash-liste
stash @ 0: WIP på funktion1: 2cfe39b Tilføjet b.txt

Hvis du prøver at tjekke mastergrenen, skal du være i stand til at gøre det nu:

$ git checkout master
Skiftet til gren 'master'

Antag at du foretager de nødvendige ændringer på masteren og derefter går tilbage til feature1-grenen:

$ git checkout-funktion 1

Din b.txt er stadig tom:

$ kat b.txt
$

Men hvis du får ændringerne fra stash ved hjælp af følgende kommando:

$ git stash gælder
 
Om filialfunktion1
Ændringer, der ikke er iscenesat for forpligtelse:
(brug "git add ... "for at opdatere, hvad der vil blive begået)
(brug "git checkout -- ... "for at kassere ændringer i arbejdskataloget)
 
ændret: b.txt
 
ingen ændringer tilføjet til commit (brug "git add" og / eller "git commit -a")

Stash Apply-kommandoen tog de stashede ændringer og anvendte den på b.txt-fil
Du kan gennemføre dit arbejde i b.txt min ændring af linjen

Jeg er ved at ændre dette til ..


Til

Jeg er ved at ændre dette til FERDIG

Fortsæt nu og foretag dine ændringer:

$ git add -A
$ git commit -m "Ændret b.txt ”

Anvendelse af et stash renser det ikke automatisk fra stashet. Du skal rense det manuelt:

$ git stash drop
Droppede refs / stash @ 0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)

Hvorfor Git Stash med navn?

Git stash er en stak. Så du kan fortsætte med at pile dine ændringer.

Antag at du tilføjer "X" til b.txt, stash det, tilføj et "Y" til b.txt, stash det og tilføj et “Z” til b.txt og stash det. Hvis du tjekker stash-historikken, kan du se noget som dette:

$ git stash-liste
[e-mailbeskyttet] 0: WIP på funktion1: 2d6f515 Ændret b.txt
[e-mail-beskyttet] 1: WIP på funktion1: 2d6f515 Ændret b.txt
[e-mail-beskyttet] 2: WIP på funktion1: 2d6f515 Ændret b.txt

Du har ingen måde at vide, hvilken stash der har hvilken ændring. Når du stashing, kan du bruge gemmuligheden til at indsætte kommentarer. Du kan bruge kommentarerne til at vedhæfte et navn til din stash og gøre dem genkendelige:

$ git stash gem "X"
Gemt arbejdsmappe og indekstilstand Om funktion1: X
HEAD er nu på 2d6f515 Modificeret b.txt

For at tilføje "X", "Y" og "Z" modifikation kan du få følgende i din stash ved hjælp af gemmuligheden for hvert stash:

$ git stash-liste
stash @ 0: Til funktion1: Z
stash @ 1: Til funktion1: Y
stash @ 2: Til funktion1: X

Nu har du et navn til hver ændring, du lagrede. Desværre kan du ikke bruge navnet til at hente stashet. Du bliver nødt til at bruge stash-nummeret. Antag, at du vil få din "Y" -ændring. Du kan se, at [e-mailbeskyttet] 1 er Y. Så du kan anvende denne ændring i din nuværende filial:

$ git stash anvend stash @ 1

Og din b.txt skal have ændringerne fra [email protected] 1.

Du kan bruge den samme metode til at droppe en stash. Antag, du indser, at du ikke længere har brug for X-stash. Du kan bare bruge følgende kommando til at slette det stash:

$ git stash drop stash @ 2

Og stashet burde være væk:

$ git stash-liste
stash @ 0: Til funktion1: Z
stash @ 1: Til funktion1: Y

Husk, at hvis du bruger anvendelses- og slipindstillingerne uden parametre, vil den bruge toppen af ​​stakken ([e-mail-beskyttet] 0).

Konklusion

Kommandoen git stash er en effektiv måde at administrere dit arbejdsområde på. At beherske denne kommando hjælper dig med at arbejde mere effektivt.

Yderligere studier:
  • https: // git-scm.com / book / da / v1 / Git-Tools-Stashing
Referencer:

Stack Overflow: Sådan navngives og hentes en stash-by-name-in-git

Mus Top 5 ergonomiske computermusprodukter til Linux
Top 5 ergonomiske computermusprodukter til Linux
Forårsager langvarig brug af computeren smerter i dit håndled eller fingre? Lider du af stive led og er konstant nødt til at ryste hænderne? Føler du ...
Mus Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
De fleste Linux-distributioner leveres som standard med "libinput" -biblioteket til at håndtere inputhændelser på et system. Det kan behandle inputhæn...
Mus Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Måske har du brug for et værktøj, der kan ændre din muses kontrol med hver applikation, du bruger. Hvis dette er tilfældet, kan du prøve en applikatio...