Git are o zonă numită stash în care puteți stoca temporar un instantaneu al modificărilor dvs. fără a le trimite în depozit. Este separat de directorul de lucru, zona intermediară sau depozitul.

Această funcționalitate este utilă atunci când ați făcut modificări la o ramură pe care nu sunteți gata să o angajați, dar trebuie să comutați la o altă ramură.

Schimbați modificările

Pentru a salva modificările în stoc, rulați comanda:

git stash save "optional message for yourself"

Acest lucru vă salvează modificările și readuce directorul de lucru la ceea ce arăta pentru cea mai recentă validare. Modificările ascunse sunt disponibile din orice sucursală din acel depozit.

Rețineți că modificările pe care doriți să le ascundeți trebuie să fie în fișierele urmărite. Dacă ați creat un fișier nou și încercați să ascundeți modificările, este posibil să primiți eroarea No local changes to save.

Vizualizați modificările ascunse

Pentru a vedea ce este în stoc, rulați comanda:

git stash list

Aceasta returnează o listă a instantaneelor ​​salvate în format stash@{0}: BRANCH-STASHED-CHANGES-ARE-FOR: MESSAGE. stash@{0} partea este numele stash-ului și numărul din acoladele ({ }) este indicele acelei stash. Dacă aveți mai multe seturi de modificări ascunse, fiecare va avea un index diferit.

Dacă ați uitat ce modificări au fost făcute în stoc, puteți vedea un rezumat al acestora cu git stash show NAME-OF-STASH. Dacă doriți să vedeți aspectul tipic al patch-urilor în stil dif (cu + și pentru schimbări linie cu linie), puteți include -p (pentru patch) opțiune. Iată un exemplu:

git stash show -p stash@{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

Preluați modificările ascunse

Pentru a prelua modificările din stoc și a le aplica la ramura curentă în care vă aflați, aveți două opțiuni:

  1. git stash apply STASH-NAME aplică modificările și lasă o copie în stoc
  2. git stash pop STASH-NAME aplică modificările și elimină fișierele din stoc

Pot exista conflicte atunci când aplicați modificări. Puteți rezolva conflictele similare unei îmbinări (a se vedea git merge pentru detalii).

Ștergeți modificările ascunse

Dacă doriți să eliminați modificările ascunse fără a le aplica, rulați comanda:

git stash drop STASH-NAME

Pentru a șterge întregul stoc, rulați comanda:

git stash clear