Обяснено на Git Stash: Как временно да съхранявате локални промени в Git

Git има област, наречена скривалище, където можете временно да съхранявате моментна снимка на вашите промени, без да ги записвате в хранилището. Той е отделен от работната директория, променителната област или хранилището.

Тази функционалност е полезна, когато сте направили промени в клон, които не сте готови да извършите, но трябва да превключите към друг клон.

Промени в скривалището

За да запазите промените си в скривалището, изпълнете командата:

git stash save "optional message for yourself"

Това запазва вашите промени и връща работната директория към това, което изглеждаше за последния фиксиране. Запазените промени са достъпни от всеки клон в това хранилище.

Имайте предвид, че промените, които искате да скриете, трябва да бъдат в проследяваните файлове. Ако сте създали нов файл и се опитате да скриете промените, може да получите грешката No local changes to save.

Преглед на скритите промени

За да видите какво има в скривалището ви, изпълнете командата:

git stash list

Това връща списък със запазените ви моментни снимки във формата [email protected]{0}: BRANCH-STASHED-CHANGES-ARE-FOR: MESSAGE. Най [email protected]{0}-хубавото е името на скривалище, а броят на фигурните скоби ( { }) е индексът на това скривалище. Ако имате скрити множество набори за промяна, всеки от тях ще има различен индекс.

Ако сте забравили какви промени са направени в скривалището, можете да видите обобщение за тях с git stash show NAME-OF-STASH. Ако искате да видите типичното оформление на кръпка в различен стил (с + и + за промяна по ред), можете да включите опцията -p(за кръпка). Ето пример:

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

Извличане на скрити промени

За да изтеглите промените извън скривалището и да ги приложите към текущия клон, в който се намирате, имате две възможности:

  1. git stash apply STASH-NAME прилага промените и оставя копие в скривалището
  2. git stash pop STASH-NAME прилага промените и премахва файловете от скривалището

Възможно е да има конфликти, когато прилагате промени. Можете да разрешите конфликтите, подобни на сливане (вижте git mergeза подробности).

Изтриване на скрити промени

Ако искате да премахнете скритите промени, без да ги прилагате, изпълнете командата:

git stash drop STASH-NAME

За да изчистите цялото скривалище, изпълнете командата:

git stash clear