Git reset

Git reset


ULASHISH

Git reset nima qiladi?

git reset buyrug‘i joriy branch’ingizni (HEAD) boshqa commit’ga ko‘chiradi.

Tanlangan parametrga qarab, u qaysi o‘zgarishlar stage qilinganini ham o‘zgartirishi yoki hatto ishchi katalogingizdagi o‘zgarishlarni o‘chirib yuborishi mumkin.

Undan commit’larni bekor qilish, fayllarni stage’dan chiqarish yoki tarixingizni tartibga keltirish uchun foydalaning.


Git reset buyruqlari va parametrlarining qisqacha mazmuni

  • git reset --soft <commit> - HEAD’ni commit’ga ko‘chirish, o‘zgarishlarni stage holatida saqlash
  • git reset --mixed <commit> - HEAD’ni commit’ga ko‘chirish, o‘zgarishlarni stage’dan chiqarish (standart)
  • git reset --hard <commit> - HEAD’ni commit’ga ko‘chirish, barcha o‘zgarishlarni bekor qilish
  • git reset <file> - Faylni stage’dan chiqarish (unstage)
  • git log --oneline - Commit tarixini ko‘rsatish

Reset qilinadigan commit’ni qanday topish mumkin

Avval qaytmoqchi bo‘lgan commit’ingizni topishingiz kerak.

Commit tarixingizning qisqacha ko‘rinishini ko‘rish uchun git log --oneline buyrug‘idan foydalaning:

Git Reset Step 1

2-qadam: Repozitoriyni o‘sha bosqichga qaytaring:

Git Reset Step 2

Oldingi bobdan so‘ng commit tariximizda qaytishimiz mumkin bo‘lgan qism paydo bo‘ldi.

Keling, buni reset yordamida qilib ko‘raylik.


Git reset: log’dan commit’ni topish

Avvalo, qaytmoqchi bo‘lgan nuqtamizni topishimiz kerak.

Buning uchun log’ni ko‘rib chiqishimiz kerak.

Juda uzun log ro‘yxatidan qochish uchun --oneline parametridan foydalanamiz, u har bir commit uchun bitta qatorda quyidagilarni ko‘rsatadi:

  • commit hash’ning birinchi yettita belgisi — reset buyrug‘imizda aynan shunga murojaat qilishimiz kerak.
  • commit message (commit xabari)

Keling, reset qilmoqchi bo‘lgan nuqtamizni topaylik:

Misol

git log --oneline
e56ba1f (HEAD -> master) Revert "Just a regular update, definitely no accidents here..."
52418f7 Just a regular update, definitely no accidents here...
9a9add8 (origin/master) Added .gitignore
81912ba Corrected spelling error
3fdaa5b Merge pull request #1 from w3schools-test/update-readme
836e5bf (origin/update-readme, update-readme) Updated readme for GitHub Branches
daf4f7c (origin/html-skeleton, html-skeleton) Updated index.html with basic meta
facaeae (gh-page/master) Merge branch 'master' of https://github.com/w3schools-test/hello-world
e7de78f Updated index.html. Resized image
5a04b6f Updated README.md with a line about focus
d29d69f Updated README.md with a line about GitHub
e0b6038 merged with hello-world-images after fixing conflicts
1f1584e added new image
dfa79db updated index.html with emergency fix
0312c55 Added image to Hello World
09f4acd Updated index.html with a new line
221ec6e First release of Hello World!

Biz commit’ga qaytmoqchimiz: 9a9add8 (origin/master) Added .gitignore — narsalarni buzishni boshlashimizdan oldingi oxirgi commit.



Git Reset --soft

git reset --soft <commit> HEAD’ni ko‘rsatilgan commit’ga ko‘chiradi, lekin barcha o‘zgarishlaringizni stage holatida (index’da) saqlaydi.

Bu bir nechta commit’ni bittaga birlashtirmoqchi bo‘lsangiz yoki shunchaki tarixni qayta yozib, ishingizni commit qilishga tayyor holda saqlamoqchi bo‘lsangiz foydali.

Misol

git reset --soft 9a9add8

9a9add8’dan keyingi barcha o‘zgarishlar endi stage qilingan va yangi commit’ga tayyor.


Git Reset --mixed (standart)

git reset --mixed <commit> (yoki shunchaki git reset <commit>) HEAD’ni ko‘rsatilgan commit’ga ko‘chiradi va barcha o‘zgarishlarni stage’dan chiqaradi, lekin ularni ishchi katalogingizda saqlab qoladi.

Bu standart parametr bo‘lib, commit’ni “bekor qilib”, o‘zgarishlaringizni tahrirlash yoki qayta commit qilish uchun saqlab qolmoqchi bo‘lsangiz foydali.

Misol

git reset --mixed 9a9add8

9a9add8’dan keyingi barcha o‘zgarishlar endi stage’dan chiqarilgan, lekin hanuz fayllaringizda.


O‘zgarishlarni ko‘zdan kechirish

Git reset’ni ishga tushirgandan so‘ng hammasi kutilganidek ekaniga ishonch hosil qilish uchun o‘zgarishlaringizni ko‘zdan kechiring.


Maslahatlar va eng yaxshi amaliyotlar

Git reset’dan ehtiyotkorlik bilan foydalaning, chunki u commit tarixingizni qayta yozishi mumkin.

Masofaviy repozitoriyga o‘zgartirish kiritishdan oldin jamoangiz bilan kelishib oling.


Muammolarni bartaraf etish

Agar Git reset bilan muammolarga duch kelsangiz, repozitoriyingizning joriy holatini ko‘rish uchun git status buyrug‘idan foydalanib ko‘ring.


Ogohlantirishlar

Git reset’dan foydalanishda ehtiyot bo‘ling, chunki u o‘zgarishlarni o‘chirib yuborishi va commit tarixingizni qayta yozishi mumkin.

Undan faqat zarur bo‘lgandagina foydalaning.




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!