Quick Tips: Utnytt fordelene med Git Stash

Quick Tips: Utnytt fordelene med Git Stash
82
Del
39
Del

Denne Cyber ​​Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.

Tenk deg at du jobber på en funksjon i en Git styrt programvare-prosjekt. Du har rett i midten av å gjøre noen endringer når du får en forespørsel om å fikse en kritisk feil. For å starte å løse problemet, trenger du en ny gren og en ren arbeidskatalog. Når det gjelder grunnleggende Git-kommandoer, har du to alternativer:

Kjør git null --hard å fjerne iverksatte endringene

Spill inn ufullstendig arbeid som en ny. forplikte.

Den tidligere alternativet mister alt arbeidet ditt mens sistnevnte resulterer i en delvis begå som ikke er meningsfylt. Ingen av disse scenariene er alt som ønskelig.

Det er der git stash kommandoen kommer inn i bildet. Som git null --hard, det gir deg en ren arbeidskatalog, men det registrerer også dine ufullstendige endringer internt. Etter å fikse den kritiske feil, kan du søke på disse endringene og fortsette der du slapp. Du kan tenke på git stash som en "pause-knapp" for din in-progress arbeid.

Forutsetninger

Denne opplæringen forutsetter at du har installert Git og at du er kjent med sin grunnleggende arbeidsflyt . Du bør være komfortabel iscenesettelse endringer, lage inger, og jobber med grener. Du trenger også en Git repository å eksperimentere på.

1. Stashing Endringer

Før du kan kjøre git stash, må du ha noen iverksatte endringer i Git depotet. For eksempel, hvis du har redigert en fil som heter foo.py, ville git status utgang ser slik ut:
På avdelings masterChanges ikke iscenesatt for innsending: (bruk "git legge til < fil > ..." for å oppdatere hva som vil være forpliktet) (bruk "git checkout - < fil > ..." for å forkaste endringer i arbeidsmappen) endret:. foo.py

for å stash disse endringene, er det bare kjøre git stash uten argumenter
git stash

Dette vil ta både iscenesatte og unstaged endringer, ta dem internt, deretter fjerne arbeidsmappen. Dette gir deg muligheten til å bytte til en ny gren og utvikle andre funksjoner uten å bekymre delvis forplikte rote noe opp.

2. Re-Bruk stuet Endringer

Når du er klar til å komme tilbake til ufullstendig arbeid, kjører du følgende kommando for å søke på nytt de gjemt endringer:
git stash pop

Den sist stuet forandrings vil dukke opp i arbeidsmappen og du kan fortsette der du slapp. Det er alt som skal til.

3. Løse konflikter

Mye som git merge-kommandoen, kan git stash pop resultere i konflikter om de samme delene av kildekoden er endret siden du henrettet git stash. Når dette skjer, vil du se følgende melding etter å ha kjørt git stash pop:
Auto-sammenslåing foo.pyCONFLICT (innhold): Flett konflikten i foo.py

Du vil også finne den berørte filen oppført under flettet lenger stier delen i git status utgang, samt de berørte linjene i kildefilen
. < < < < < < < Oppdatert upstreamprint ( "Nylig begått endringer"); ======= print ( "Ufullstendig arbeid"); > > > > > > > Stuet endringer

Du må løse konflikten i kildefilen manuelt, men du vanligvis ikke ønsker å forplikte det umiddelbart som du vil etter en git fusjonere konflikt. Mesteparten av tiden, vil du fortsette å jobbe på uferdig funksjonen før du har forberedt en menings begå. Deretter kan du bare legge den til i indeksen og begår det som vanlig. Med andre ord, kan du unne git stash pop konflikter akkurat som alle andre ikke-iverksatte endringer.

4. Den Stash Stack

For de fleste scenarier, de ovennevnte kommandoene er alt du trenger når det kommer til en "pause-knappen". Men, forstå hvordan gjemt endringer er representert åpner døren for mer avansert bruk.

Så langt har vi bare snakket om stashing en enkelt forandrings. Men hver gang du kjører git stash, blir iverksatte endringene lagret på en stabel. Dette betyr at du kan stash flere forandrings samtidig.

Dette er nyttig i de tidlige stadiene av utviklingen når du ikke er sikker på hvilken retning du vil ta. I stedet for å miste endringene med git null --hard, du kan holde work-in-progress snapshots på stash stabelen i tilfelle du ønsker å søke på nytt en av dem senere.

Du kan inspisere stash stable med listen parameter
git stash liste

Hvis du tidligere har utført git stash tre ganger, dette ville produksjonen noe sånt som følgende:.
stash @ {0}: WIP på ny-funksjon: 5cedccc Prøv noe crazystash @ {1}: WIP på ny-funksjon: 9f44b34 Ta en annen directionstash @ {2}: WIP på ny-funksjon: 5acd291 Begynn ny funksjon

git stash pop kommando alltid gjen gjelder den siste snapshot, den ene på toppen av den stash stabelen. Men det er også mulig å velge hvilke stuet bildet du ønsker å søke på nytt med den gjelder kommandoen. For eksempel, hvis du ønsket å søke på nytt det andre settet med endringer, vil du bruke følgende kommando:
git stash gjelder stash @ {1}

Akkurat som git stash pop, endringene vil dukke opp i arbeidskatalog, og du kan fortsette å arbeide på ufullstendig funksjonen. Merk at dette ikke vil automatisk fjerne øyeblikksbilde fra stash stabelen. I stedet må du slette den manuelt med slipp kommando.
Git stash dråpe stash @ {1}

Igjen, som arbeider med stash stack er mer av en kant tilfelle for de fleste Git brukere. De git stash og git stash pop kommandoer bør være nok for de fleste av dine behov, selv om git stash listen kan også være nyttig hvis du har glemt hvor den siste stash operasjonen fant sted.

Konklusjon

binde menings snapshots er i hjertet av enhver Git arbeidsflyt. Målrettet, innkapslet inger gjør det mye enklere å navigere prosjektet historie, finne ut hvor feil ble innført, og tilbake endringer.

Selv om det ikke akkurat en hverdags kommando, kan git stash være et svært praktisk verktøy for å lage meningsfulle inger . Den lar deg lagre ufullstendig arbeid og samtidig unngå å måtte forplikte seg delvis øyeblikksbilder til din faste prosjekt historie. Ha dette i tankene neste gang du skulle ønske du kunne ta en pause hva du jobber med og komme tilbake til det senere.



Previous:
Next Page: