Git stash
Git stash
Stash uchun asosiy buyruqlar
git stash- O‘zgarishlaringizni stash’ga saqlashgit stash push -m "message"- Xabar bilan stash’ga saqlashgit stash list- Barcha stash’larni ro‘yxat qilishgit stash branch <branchname>- Stash’dan branch yaratish
Git stash nima? Undan nima uchun foydalaniladi?
Ba’zan vazifani tezda almashtirishingiz yoki xatoni tuzatishingiz kerak bo‘ladi, lekin ishingizni commit qilishga hali tayyor emassiz.
git stash commit qilinmagan o‘zgarishlaringizni saqlab qo‘yish va toza ishchi katalogga qaytish imkonini beradi.
Keyinroq qaytib, o‘zgarishlaringizni tiklashingiz mumkin.
Quyida ba’zi keng tarqalgan foydalanish holatlari keltirilgan:
- Branch’larni xavfsiz almashtirish: Branch’ni almashtirishdan oldin ishingizni saqlab qo‘ying.
- Favqulodda vaziyatlarni hal qilish: Shoshilinch biror narsani tuzatish uchun ishingizni stash’ga saqlang, so‘ng uni qayta tiklang.
- Tugallanmagan ishingizni xavfsiz saqlash: Tartibsiz commit’lar yoki o‘zgarishlarni yo‘qotishdan saqlaning.
O‘zgarishlaringizni stash’ga saqlash (git stash)
Joriy o‘zgarishlaringizni (kuzatiladigan fayllarning stage qilingan va stage qilinmagan o‘zgarishlarini) quyidagicha saqlang:
- Kuzatiladigan fayllar (stage qilingan va stage qilinmagan) standart holatda stash’ga saqlanadi.
- Kuzatilmaydigan fayllar (hali Git’ga qo‘shilmagan yangi fayllar) standart holatda stash’ga saqlanmaydi.
- Kuzatilmaydigan fayllarni ham stash’ga saqlash uchun
git stash -u(yoki--include-untracked) parametridan foydalaning.
Misol: Ishingizni stash’ga saqlash
git stash
Saved working directory and index state WIP on main: 1234567 Add new feature
Bu buyruq o‘zgarishlaringizni saqlaydi va ishchi katalogingizni tozalaydi, shunda vazifalar yoki branch’lar o‘rtasida xavfsiz almasha olasiz.
Endi o‘zgarishlaringiz stekda (stack) saqlandi.
Stash steki nima?
Har safar git stash buyrug‘ini ishga tushirganingizda, o‘zgarishlaringiz “stek”ning (stack) eng ustiga saqlanadi.
Eng so‘nggi stash eng ustda bo‘ladi va stash’larni yuqoridan pastga qarab qo‘llashingiz yoki o‘chirishingiz, yoxud ro‘yxatdan muayyan birini tanlashingiz mumkin.
Ishchi katalogingiz toza, endi branch’larni almashtirishingiz yoki yangilanishlarni xavfsiz pull qilishingiz mumkin.
Xabar bilan stash’ga saqlash (git stash push -m)
Nimani stash’ga saqlaganingizni eslab qolish uchun xabar qo‘shing:
Misol: Xabar bilan stash’ga saqlash
git stash push -m "WIP: homepage redesign"
Saved working directory and index state On main: WIP: homepage redesign
Bu buyruq stash’ingizga tavsiflovchi xabar qo‘shish imkonini beradi, shunda nima ustida ishlayotganingizni eslab qolasiz.
Barcha stash’larni ro‘yxat qilish (git stash list)
Saqlangan barcha stash’laringizni ko‘ring:
Misol: Stash’larni ro‘yxat qilish
git stash list
stash@{0}: On main: WIP: homepage redesign
stash@{1}: WIP on main: 1234567 Add new feature
Bu buyruq shu paytgacha saqlagan barcha stash’laringizni nomlari va xabarlari bilan ko‘rsatadi.
Stash tafsilotlarini ko‘rsatish (git stash show)
Eng so‘nggi stash’da nimalar o‘zgarganini ko‘ring:
Misol: Eng so‘nggi stash’ni ko‘rsatish
git stash show
src/index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Bu buyruq eng so‘nggi stash’ingizda qaysi fayllar va o‘zgarishlar borligi haqida qisqacha ma’lumot beradi.
To‘liq farqni (diff) ko‘rish uchun:
Misol: To‘liq diff’ni ko‘rsatish
git stash show -p
diff --git a/src/index.html b/src/index.html
index 1234567..89abcde 100644
--- a/src/index.html
+++ b/src/index.html
@@ ...
Bu buyruq eng so‘nggi stash’ingizda o‘zgartirilgan qatorlarni aniq ko‘rsatadi.
Eng so‘nggi stash’ni qo‘llash (git stash apply)
Eng so‘nggi stash’ga saqlangan o‘zgarishlaringizni tiklang (stash stekda saqlanib qoladi):
Misol: Eng so‘nggi stash’ni qo‘llash
git stash apply
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: src/index.html
Bu buyruq eng so‘nggi stash’ga saqlangan o‘zgarishlaringizni tiklaydi, lekin kerak bo‘lsa, qayta foydalanishingiz uchun stash’ni ro‘yxatda qoldiradi.
Muayyan stash’ni qo‘llash (git stash apply stash@{n})
Ro‘yxatdagi muayyan stash’ni tiklang:
Misol: Muayyan stash’ni qo‘llash
git stash apply stash@{1}
On branch main
Changes not staged for commit:
modified: src/index.html
Bu buyruq faqat eng so‘nggisini emas, balki ro‘yxatingizdagi muayyan stash’ni tiklash imkonini beradi.
Stash’ni pop qilish (git stash pop)
Eng so‘nggi stash’ni qo‘llang va uni stekdan olib tashlang:
Misol: Stash’ni pop qilish
git stash pop
On branch main
Changes not staged for commit:
modified: src/index.html
Dropped refs/stash@{0} (abc1234d5678)
Bu buyruq eng so‘nggi stash’ingizni tiklaydi va bir vaqtning o‘zida uni ro‘yxatdan olib tashlaydi.
Stash’ni o‘chirish (git stash drop)
Muayyan stash endi kerak bo‘lmaganda uni o‘chiring:
Misol: Stash’ni o‘chirish
git stash drop stash@{0}
Dropped stash@{0} (abc1234d5678)
Bu buyruq endi kerak bo‘lmagan muayyan stash’ni ro‘yxatingizdan o‘chiradi.
Barcha stash’larni tozalash (git stash clear)
Barcha stash’laringizni birdaniga o‘chiring:
Misol: Barcha stash’larni tozalash
git stash clear
Bu buyruq barcha stash’laringizni birdaniga o‘chiradi. Ehtiyot bo‘ling! Buni bekor qilib bo‘lmaydi!
Stash’dan branch yaratish (git stash branch)
Yangi branch yarating va unga stash’ni qo‘llang.
Agar stash’ga saqlangan ishingiz alohida funksiya branch’iga aylanishi kerak bo‘lsa, foydali:
Misol: Stash’dan branch yaratish
git stash branch new-feature stash@{0}
Switched to a new branch 'new-feature'
On branch new-feature
Changes not staged for commit:
modified: src/index.html
Dropped stash@{0} (abc1234d5678)
Bu buyruq yangi branch yaratadi va stash’ga saqlangan o‘zgarishlaringizni unga qo‘llaydi.
Agar ishingiz alohida funksiya branch’iga aylanishi kerak degan qarorga kelsangiz, bu foydali.
Stash’dan foydalanish bo‘yicha eng yaxshi amaliyotlar
- Stash’ga saqlashda aniq xabarlardan foydalaning:
git stash push -m "WIP: feature name" - Stash’lardan uzoq muddatli saqlash joyi sifatida foydalanmang — imkon bo‘lganda ishingizni commit qiling.
- Stash ro‘yxatingizni muntazam tekshirib turing va endi kerak bo‘lmagan eski stash’larni tozalang.
Muammolarni bartaraf etish
- O‘zgarishlaringizni yo‘qotdingizmi? Stash’ga saqlangan ishni tiklash uchun
git stash listvagit stash applybuyruqlarini sinab ko‘ring. - Stash muammosiz qo‘llanmadimi? Xuddi merge’dagi kabi ziddiyatlarni (conflict) hal qilishingiz kerak bo‘lishi mumkin.
Git hal qilishingiz uchun fayllaringizdagi ziddiyatlarni belgilab qo‘yadi. - Kuzatilmaydigan fayllar yo‘qolib qoldimi? Standart holatda kuzatilmaydigan fayllar stash’ga saqlanmaydi.
Agar ularni stash’ga saqlash kerak bo‘lsa, keyingi safargit stash -uparametridan foydalaning. - Tasodifan barcha stash’larni tozalab yubordingizmi? Afsuski,
git stash clearamalini qaytarib bo‘lmaydi.
Uni ishga tushirishdan oldin har doim ikki marta tekshiring!
Eslatma: Stash’lar vaqtinchalik ish uchun foydali, lekin ular commit’larning o‘rnini bosa olmaydi!
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
