- Published on
Git-da Stage, Unstage va Stash qilish
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Avvalgi videoda commit qilishning asoslari ko'rib chiqilgan edi. Bu videoda staging va stashing o'rtasidagi farq ko'rib chiqiladi β bu ikkisi ko'pincha aralashtirib yuboriladi.
Staging β commit bilan bog'liq: har safar commit qilishdan oldin, qaysi o'zgarishlarni shu commitga kiritish kerakligini tanlash kerak.
Stashing β bundan farqli: bu loyihada o'zgarishlar bor, lekin ular hali commit qilishga tayyor emasligini bildiradi β ular vaqtincha "chetga qo'yiladi".
Staging β qaysi o'zgarishlarni commit qilish
Avvalgi videoda har doim Stage All bosilgan edi β barcha o'zgarishlar birga commit qilingan. Lekin ko'pincha faqat ba'zi o'zgarishlarni commit qilish kerak bo'ladi.
Fayl darajasida stage qilish
Bir nechta faylda o'zgarish bo'lsa, ularning faqat ba'zilarini stage qilish mumkin:
ContentView.swift β o'zgartirilgan (stage qilinmaydi)
HomeView.swift β o'zgartirilgan (stage qilinadi)
Bu holatda faqat HomeView.swift commit qilinadi, ContentView.swift o'zgarishlari unstaged holatda qoladi va keyingi commit-da kiritiladi.
Bitta fayl ichida qisman stage qilish
Bitta faylda bir nechta o'zgarish bo'lishi mumkin β masalan, bitta o'zgarish tayyor, ikkinchisi hali emas:
// 1-o'zgarish β tayyor, stage qilinadi
Text("Salom")
// 2-o'zgarish β hali tayyor emas, unstaged qoladi
@State private var title: String = ""
Har bir o'zgarishni alohida stage qilish mumkin β faylning faqat ba'zi qatorlarini tanlab commit qilish imkonini beradi.
Stage va Unstage β barcha usullari
1. Bitta o'zgarish β uning yonidagi tugma orqali stage/unstage
2. Bitta faylning barcha o'zgarishlari β "Stage All Changes in File"
3. Barcha fayllarning barcha o'zgarishlari β "Stage All Changes"
Teskari amal ham mavjud:
"Unstage All Changes in File"
"Unstage All Changes"
Muhim: Agar hech narsa stage qilinmagan bo'lsa, Commit tugmasi faollashmaydi β commit qilish uchun kamida bitta o'zgarish stage qilingan bo'lishi shart.
GitKraken-da staging
GitKraken-da ham xuddi shunday: fayllar ro'yxatidan kerakli fayl yoki o'zgarish tanlanib, faqat o'sha qism stage qilinadi, so'ngra commit xabari yozilib, Commit bosiladi.
Discard All Changes β o'zgarishlarni butunlay o'chirish
Agar yozilgan kod kerak bo'lmasa va oxirgi commit holatiga qaytish kerak bo'lsa, Discard All Changes ishlatiladi:
β οΈ OGOHLANTIRISH: Discard qilingan o'zgarishlar QAYTARILMAYDI
Bu amal β fayldagi yoki butun loyihadagi barcha saqlanmagan o'zgarishlarni butunlay o'chirib, oxirgi commit holatiga qaytaradi. Faqat kod haqiqatan ham kerak bo'lmaganda ishlatish kerak.
Stash β o'zgarishlarni vaqtincha chetga qo'yish
Ba'zan yozilgan kod yaxshi, lekin hali commit qilishga tayyor emas β masalan, funksiya hali to'liq tugamagan. Bunday holatlarda Stash ishlatiladi.
Stash qachon kerak bo'ladi
Bir nechta dasturchi turli branch-larda ishlayotgan vaziyatni tasavvur qiling. Birovga boshqa branch-ga zudlik bilan o'tish kerak bo'lib qoladi, lekin joriy branch-da hali commit qilinmagan o'zgarishlar bor. Bu holatda ikkita variant bor:
- O'zgarishlarni discard qilish β agar kerak bo'lmasa
- O'zgarishlarni stash qilish β agar keyinroq kerak bo'lsa
Stash qilish jarayoni
1. "Stash Changes" tugmasi bosiladi
2. Stash uchun tavsif yoziladi (masalan: "home view uchun o'zgarishlar")
3. Stash saqlanadi, loyiha esa oxirgi commit holatiga qaytadi
Stash qilingandan so'ng, loyiha xuddi Discard All Changes bosilgandek ko'rinadi β lekin farqi shundaki, o'zgarishlar yo'qolmaydi, ular alohida joyda saqlanadi.
Stash va Discard farqi
| Discard | Stash | |
|---|---|---|
| O'zgarishlar | Butunlay yo'qoladi | Saqlanadi, keyin qaytarish mumkin |
| Qaytarish mumkinmi | Yo'q | Ha |
| Qachon ishlatish | Kod kerak bo'lmasa | Kod kerak, lekin hali tayyor emas |
Stash-ni qayta qo'llash (Apply)
Stash qilingan o'zgarishlarni keyinroq qaytarish uchun:
- Source Control Navigator β Repositories β Stashed Changes
- Kerakli stash tanlanadi
- O'ng tugma β Apply
- Tizim stash-ni saqlab qolish yoki o'chirish so'raydi
"Keep stash after applying" β belgilansa, stash arxivda qoladi
"Keep stash after applying" β belgilanmasa, qo'llanilgandan keyin o'chiriladi
Odatda stash-ni saqlab qolish tavsiya etiladi β bu zarar keltirmaydi va kerak bo'lganda yana qo'llash imkonini beradi.
Stash qo'llanilgandan keyin
Qo'llanilgan o'zgarishlar loyihaga qaytariladi, lekin unstaged holatda bo'ladi β ularni qayta stage qilib, commit qilish kerak bo'ladi.
GitKraken-da Stash
GitKraken interfeysida stash alohida ko'k belgi sifatida ko'rsatiladi β bu joriy ish jarayonidan (working tree) ajratilgan holda saqlanadi. Yangi commit-lar qilingan sari, stash o'zgarmasdan saqlanib qoladi va istalgan vaqtda qo'llash mumkin.
Stash-ning amaliy qo'llanilishi
Stash ikkita asosiy holatda foydali:
1. Branch almashtirish
Boshqa branch-ga o'tish kerak bo'lib, joriy o'zgarishlar hali tayyor bo'lmaganda β ularni stash qilib, branch-ni xavfsiz almashtirish mumkin.
2. Murakkab yechimni sinab ko'rish
Murakkab funksiya yoki xato ustida ishlaganda, bir nechta turli yondashuvni sinab ko'rish mumkin: bir variantni yozib stash qilish, qaytadan boshqacha yozib yana stash qilish β natijada bir nechta turli yechim varianti saqlanadi va ulardan eng yaxshisini tanlash mumkin bo'ladi.
Xulosa β asosiy tushunchalar
| Tushuncha | Ma'nosi |
|---|---|
| Clone | Repo-ni lokal kompyuterga nusxalash |
| Commit | Joriy branch-da checkpoint saqlash |
| Stage | O'zgarishlarni commit uchun tayyorlash |
| Stash | O'zgarishlarni keyinroq foydalanish uchun chetga qo'yish |
Staging β qaysi o'zgarishlarni commit qilish kerakligini nazorat qilish imkonini beradi. Stashing β hali tayyor bo'lmagan ishni yo'qotmasdan saqlab qo'yish imkonini beradi. Bu ikkala vosita Source Control bilan ishlashda muhim ahamiyatga ega.
Keyingi bosqichda lokal repository hali ham GitHub-dagi remote repository bilan sinxronlanmagan β lokal va remote o'rtasidagi farq saqlanib qolgan. Bu farqni bartaraf etish uchun push va pull amallari kerak bo'ladi.