git revert — commit’ni xavfsiz bekor qiladigan buyruq. reset dan farqli o’laroq, revert tarixni o’chirmaydi — u eski commit’ni “bekor qiluvchi” yangi commit yaratadi. Aynan shuning uchun u jamoada bo’lishilgan (push qilingan) commit’larni qaytarishning yagona to’g’ri usulidir.
git revert — tanlangan commit’ning o’zgarishlarini teskarisiga qaytaradigan yangi commit yaratadi. U tarixni buzmasdan xatoni bekor qiladi.
Commit’ni bekor qilish
git revert berilgan commit’ning o’zgarishlarini teskarisiga qaytaruvchi yangi commit yaratadi:
git revert a1b2c3d
[main e5f6a7b] Revert "Xato funksiya qo'shildi"
1 file changed, 1 deletion(-)
git revert a1b2c3d — a1b2c3d commit qilgan o’zgarishlarni bekor qiluvchi yangi commit yaratdi. Eski commit tarixda qoladi, ammo uning ta’siri yo’qoladi. Bu “xatoni tan olib, uni tuzatdim” degani.
revert va reset farqi
Ikki buyruqni jadvalda solishtiramiz — bu farq juda muhim:
| Xususiyat | git reset |
git revert |
|---|---|---|
| Tarix | o’chiradi/o’zgartiradi | saqlaydi |
| Yangi commit | yo’q | ha (bekor qiluvchi) |
| Push qilingan commit | xavfli | xavfsiz |
| Jamoa uchun | mos emas | to’g’ri usul |
reset — mahalliy, shaxsiy commit’lar uchun; revert — bo’lishilgan, umumiy commit’lar uchun.
Nega revert xavfsiz?
revert tarixni buzmagani uchun jamoada muammo tug’dirmaydi. Agar main da xato commit push qilingan bo’lsa va boshqalar uni allaqachon olgan bo’lsa, reset xavfli (tarix chalkashadi). revert esa oddiy yangi commit qo’shadi — hamma uni oddiy o’zgarish sifatida qabul qiladi:
git revert HEAD
git push
[main f6a7b8c] Revert "Oxirgi o'zgarish"
To https://github.com/uzbekdevs/loyiha.git
HEAD — oxirgi commit. revert HEAD uni bekor qildi va push bilan bulutga yubordik — jamoa uchun xavfsiz.
Amaliy qoida
Sodda qoida: push qilingandan keyin biror narsani bekor qilish kerak bo’lsa — doim git revert ishlating. Push qilinmagan mahalliy commit’larni tozalash uchun esa git reset mumkin. Bu qoida jamoa ishida ma’lumot va tarix yaxlitligini saqlaydi.
Xulosa
Bu bo’limda git revert bilan commit’ni xavfsiz bekor qilish, uning reset dan farqini va nega jamoada xavfsizligini ko’rib chiqdik. revert — bo’lishilgan commit’larni qaytarishning to’g’ri usulidir. Keyingi darsda git tag bilan versiyalarni belgilashga o’tamiz.