Git / git stash

git stash

Нэг ажил дундаасаа өөр branch руу шилжих хэрэгтэй болов уу? Дуусаагүй кодоо commit хийхгүйгээр түр хажуу тийш хадгалахад git stash хэрэглэнэ.

git stash — ажлыг түр хадгалах

Засварлаж байгаа, staging area-д байгаа бүх өөрчлөлтийг "stash" буюу нуугдсан хадгалалтад хийж, ажлын фолдерийг сүүлийн commit-ийн байдалд буцаана:

bash
git stash
код
Saved working directory and index state WIP on main: a1b2c3d feat: нэвтрэх хуудас нэмэх

Одоо git status харвал цэвэр — өөрчлөлт байхгүй. Чөлөөтэй өөр branch руу шилжиж болно.

git stash pop — буцааж авах

Stash-д хадгалсан өөрчлөлтийг ажлын фолдерт буцааж авах:

bash
git stash pop

pop нь stash-аас авч, stash-ийн жагсаалтаас устгана. Хэрэв stash хэд байвал хамгийн сүүлийнхийг авна (stack буюу сүүлд орсон нь эхлээд гарах зарчим).

git stash list — бүх stash харах

Хэд хэдэн удаа stash хийж болно. Бүгдийг харах:

bash
git stash list
код
stash@{0}: WIP on main: a1b2c3d feat: нэвтрэх хуудас нэмэх
stash@{1}: WIP on feature/login: 9f8e7d6 fix: API алдаа засах
stash@{2}: On main: нэвтрэлтийн туршилт

stash@{0} — хамгийн сүүлийн stash. stash@{2} — хамгийн эхний.

git stash apply — устгалгүйгээр авах

pop-оос ялгаатай нь apply stash-ийн жагсаалтаас устгалгүйгээр өөрчлөлтийг буцааж авна:

bash
git stash apply

Тодорхой stash-ийг авах:

bash
git stash apply stash@{2}

Ижил өөрчлөлтийг хэд хэдэн branch-д хэрэгжүүлэхэд хэрэгтэй.

git stash drop — stash устгах

Хэрэггүй болсон stash-ийг устгах:

bash
git stash drop

Тодорхой stash устгах:

bash
git stash drop stash@{1}

Бүх stash-ийг нэг дор устгах:

bash
git stash clear

Stash-д message нэмэх

Олон stash байхад stash@{0} гэдэг нэр ямар ажил байгааг тодорхойлохгүй. Message нэмбэл тодорхой болно:

bash
git stash push -m "нэвтрэлтийн форм — validation дуусаагүй"

git stash list:

код
stash@{0}: On main: нэвтрэлтийн форм — validation дуусаагүй
stash@{1}: WIP on feature/login: 9f8e7d6 ...

Untracked файл stash хийх

Анхдагчаар git stash нь зөвхөн Git-д мэдэгдэх файлуудыг хадгалдаг. Шинэ (untracked) файлуудыг оруулахад -u тугийг нэмнэ:

bash
git stash push -u -m "шинэ компонент — дуусаагүй"

.gitignore-д байгаа файлуудыг ч оруулах:

bash
git stash push -a -m "бүгдийг хадгалах"

Практик жишээ

bash
# feature/профайл дээр ажиллаж байна
git switch feature/профайл
# ... код бичиж байна, дуусаагүй ...

# Яаралтай main-д алдаа засах хэрэгтэй болов
git stash push -m "профайл хуудас — зураг оруулах хэсэг дуусаагүй"

# main руу шилжиж алдаа засах
git switch main
git switch -c fix/яаралтай-алдаа
# ... алдаа засна ...
git commit -m "fix: нэвтрэлтийн cookie дуусах алдаа засах"

# feature/профайл руу буцах
git switch feature/профайл
git stash pop

# Ажлаа үргэлжлүүлэх

Дараагийн хичээлд:

Remote repository нэмэх, удирдах болон origin нэрний уламжлалыг судална.