Darsliklar GIT Reset

GIT GIT Reset

git reset — commit’larni orqaga qaytaradigan kuchli buyruq. Xato commit qildingizmi yoki bir necha commit’ni bekor qilmoqchimisiz — git reset uni hal qiladi. Biroq u eng xavfli buyruqlardan biri: uch rejimi bor va ba’zilari o’zgarishlarni butunlay yo’qotadi. Shuning uchun ehtiyotkorlik shart.

git resetjoriy tarmoqni oldingi commit holatiga qaytaradigan buyruq. Uning --soft, --mixed va --hard rejimlari o’zgarishlar bilan turlicha ishlaydi.

Uch rejim

git reset ning uch rejimi o’zgarishlar taqdirini belgilaydi. Ularni jadvalda ko’ramiz:

Rejim Commit Staging O’zgarishlar
--soft qaytadi saqlanadi saqlanadi
--mixed (standart) qaytadi tozalanadi saqlanadi
--hard qaytadi tozalanadi yo’qoladi

--soft — eng yumshoq (hamma narsa qoladi), --hard — eng qattiq (hamma narsa o’chadi).

soft reset — commit’ni ochish

--soft oxirgi commit’ni “ochadi”, ammo o’zgarishlarni staging’da qoldiradi. Bu commit’larni birlashtirish yoki xabarni o’zgartirishda foydali:

git reset --soft HEAD~1
[Oxirgi commit ochildi, o'zgarishlar staging'da qoldi]

HEAD~1 — bir commit orqaga. --soft commit’ni bekor qildi, ammo o’zgarishlaringiz add qilingan holatda turibdi. Endi ularni qayta commit qilishingiz mumkin.

mixed reset — staging’ni tozalash

--mixed (standart) commit’ni ochadi va staging’ni tozalaydi, ammo o’zgarishlar working directory’da qoladi:

git reset HEAD~1
Unstaged changes after reset:
M  salom.txt

O’zgarishlaringiz yo’qolmadi — faqat add va commit bekor qilindi. Bu “commit’ni ham, add’ni ham qaytaraman, lekin ishimni saqlayman” degani.

hard reset — DIQQAT!

--hard — eng xavfli: commit’ni, staging’ni va o’zgarishlarni butunlay o’chiradi:

git reset --hard HEAD~1
HEAD is now at a1b2c3d Oldingi commit

Diqqat: --hard saqlanmagan o’zgarishlarni qaytarib bo’lmaydigan tarzda yo’qotadi. Uni faqat o’zgarishlar kerak emasligiga to’liq ishonch bo’lganda ishlating. Push qilingan commit’larda esa umuman ishlatmang.

reset va revert

Muhim eslatma: git reset tarixni o’zgartiradi — shuning uchun u faqat mahalliy, push qilinmagan commit’lar uchun xavfsiz. Push qilingan commit’ni bekor qilish uchun git revert ishlatiladi (keyingi dars), chunki u tarixni buzmaydi.

Xulosa

Bu bo’limda git reset ning uch rejimini (--soft, --mixed, --hard), ularning farqini va --hard ning xavfini ko’rib chiqdik. git reset — kuchli, ammo ehtiyotkorlik talab qiladigan vosita. Keyingi darsda git revert bilan xavfsiz bekor qilishga o’tamiz.