Published on

Git-da Stage, Unstage va Stash qilish

Authors

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:

  1. O'zgarishlarni discard qilish β€” agar kerak bo'lmasa
  2. 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

DiscardStash
O'zgarishlarButunlay yo'qoladiSaqlanadi, keyin qaytarish mumkin
Qaytarish mumkinmiYo'qHa
Qachon ishlatishKod kerak bo'lmasaKod kerak, lekin hali tayyor emas

Stash-ni qayta qo'llash (Apply)

Stash qilingan o'zgarishlarni keyinroq qaytarish uchun:

  1. Source Control Navigator β†’ Repositories β†’ Stashed Changes
  2. Kerakli stash tanlanadi
  3. O'ng tugma β†’ Apply
  4. 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

TushunchaMa'nosi
CloneRepo-ni lokal kompyuterga nusxalash
CommitJoriy branch-da checkpoint saqlash
StageO'zgarishlarni commit uchun tayyorlash
StashO'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.

Buy mea coffee