Git Stash
Zamislite da radite na delu projekta i on počinje da bude neuredan. Došlo je do hitne greške kojoj je potrebna vaša hitna pažnja. Vreme je da sačuvate promene i promenite grane. Problem je u tome što ne želite da commit-ujete pola posla. Rešenje je git stash
.
Stashing je zgodan ako trebate brzo prebaciti kontekst i raditi na nečem drugom, ali ste na pola puta kroz promenu koda i niste baš spremni za commit.Autor Bitbucket
Stashing
Recimo da trenutno imate nekoliko lokalnih modifikacija. Pokrenite [git status](https://kolosek.com/git-commands-tutorial-part2/)
da biste proverili trenutno stanje:
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
# modified: index.html
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# modified: assets/stylesheets/styles.css
Moramo da poradimo na toj hitnoj grešci. Prvo, želimo da sačuvamo nedovršene radne promene bez njihovog izvršenja. Ovde git stash
dolazi kao spasitelj:
$ git stash
Saved working directory and index state WIP on master:
bb06da6 Modified the index page
HEAD is now at bb06da6 Modified the index page
(To restore them type "git stash apply")
Vaš radni direktorijum je sada čist i sve ne-commit-ovane lokalne promene su sačuvane! U ovom trenutku možete slobodno unositi nove promene, kreiranje novog commit-a, menjanje grane i izvoditi bilo koje druge Git operacije.
Po defaultu su stash-ovane datoteke identifikovane kao „WIP“ - rad u toku, na vrhu grane i commit-a se iz kojeg su stvorene.
Ponovna Primena Vašeg Stash-a
Git stash je privremeno skladište. Kada budete spremni da nastavite tamo gde ste stali, možete lako da vratite sačuvano stanje: git stash pop
.
Iskakanjem vašeg skrivanja uklanjaju se promene iz vašeg skladišta i ponovo se primenjuje poslednje sačuvano stanje. Ako želite da zadržite promene i u stash, umesto toga možete koristiti git stash apply
.
Dodatni Saveti i Trikovi
Postoji nekoliko drugih stvari koje možete učiniti sa stash-om. Hajde da pogledamo!
Čuvanje stash-a
Sačuvajte stash sa porukom: $ git stash save <message>
.
Isprobajte ovo dodavanjem CSS linije u svoje stilove i sakrijte ga lepim komentarom.
Stash datoteka bez praćenja
Ovo je jedini način da sačuvate datoteke koje nisu praćene: $ git stash -u ili $ git stash --include-untracked
Listing više stash-eva
Kada koristite git stash
ili git stash save
, Git će stvoriti objekt Git commit sa imenom, a zatim će ga sačuvati u vašem repo-u. Spisak stash-eva koje ste napravili možete pogledati u bilo kom trenutku! $ git stash list
.
$ git skrivena lista
stash @ {0}: Na glavnom: Izmenjena stranica indeksa
stash @ {1}: VIP na masteru: bb06da6 Početno urezivanje
Delimični stash
Možete odabrati da stash-ujete samo jednu datoteku, kolekciju datoteka ili pojedinačne promene unutar datoteka: $ git stash -p
ili $ git stash --patch
.
RSpec testovi su neophodni u projektima Rubi on Rails, ali možda nisu uvek kompletni. Spremite samo onaj deo koji je spreman za upotrebu!
Pregled stash razlika
Postoje dva načina za pregled skrivene datoteke: da biste videli punu razliku stash-a - $ git stash show -p
ili pogledajte samo najnovij stash - $ git stash show
.
$ git skrivena emisija
indek.html | 1 +
stile.css | 2 ++
Promenjene su 2 datoteke, 3 umetanja (+)
Stvaranje grane iz stash-a
Napravite novu granu na koju ćete stash promene, a zatim na nju stavite stash promene: $ git stash branch <branch_name> <stash_id>
.
Ovo je još jedan način da sačuvate stash pre nego što nastavite sa projektom.
Uklanjanje stash-a
Koristite ga oprezno, možda je teško vratiti. Jedini način da ga vratite je ako niste zatvorili terminal nakon brisanja stash-a.
Ako vam više nije potreban određen stash, možete ga izbrisati pomoću: $ git stash drop <stash_id>
. Ili možete izbrisati sve iz repo-a pomoću: $ git stash clear
.
Nadam se da vam je ovaj članak pomogao da bolje razumete kako stash funkcioniše. Obavezno ga testirajte!
Sledeći članak je upravo o napuštanju stash! Pretplatite se i informišite se kada za to dođe vreme!