git stash
Нэг ажил дундаасаа өөр branch руу шилжих хэрэгтэй болов уу? Дуусаагүй кодоо commit хийхгүйгээр түр хажуу тийш хадгалахад git stash хэрэглэнэ.
git stash — ажлыг түр хадгалах
Засварлаж байгаа, staging area-д байгаа бүх өөрчлөлтийг "stash" буюу нуугдсан хадгалалтад хийж, ажлын фолдерийг сүүлийн commit-ийн байдалд буцаана:
git stash
Saved working directory and index state WIP on main: a1b2c3d feat: нэвтрэх хуудас нэмэх
Одоо git status харвал цэвэр — өөрчлөлт байхгүй. Чөлөөтэй өөр branch руу шилжиж болно.
git stash pop — буцааж авах
Stash-д хадгалсан өөрчлөлтийг ажлын фолдерт буцааж авах:
git stash pop
pop нь stash-аас авч, stash-ийн жагсаалтаас устгана. Хэрэв stash хэд байвал хамгийн сүүлийнхийг авна (stack буюу сүүлд орсон нь эхлээд гарах зарчим).
git stash list — бүх stash харах
Хэд хэдэн удаа stash хийж болно. Бүгдийг харах:
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-ийн жагсаалтаас устгалгүйгээр өөрчлөлтийг буцааж авна:
git stash apply
Тодорхой stash-ийг авах:
git stash apply stash@{2}
Ижил өөрчлөлтийг хэд хэдэн branch-д хэрэгжүүлэхэд хэрэгтэй.
git stash drop — stash устгах
Хэрэггүй болсон stash-ийг устгах:
git stash drop
Тодорхой stash устгах:
git stash drop stash@{1}
Бүх stash-ийг нэг дор устгах:
git stash clear
Stash-д message нэмэх
Олон stash байхад stash@{0} гэдэг нэр ямар ажил байгааг тодорхойлохгүй. Message нэмбэл тодорхой болно:
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 тугийг нэмнэ:
git stash push -u -m "шинэ компонент — дуусаагүй"
.gitignore-д байгаа файлуудыг ч оруулах:
git stash push -a -m "бүгдийг хадгалах"
Практик жишээ
# 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 нэрний уламжлалыг судална.