Junior — Middle
Оё шумо метавонед намудҳои асосии фармони git reset-ро номбар ва шарҳ диҳед?
sobes.tech AI
Ҷавоб аз AI
Каманда git reset истифода мешавад барои бекор кардани тағйирот ва гузоштани ишоракунандаи HEAD дар Git. Навъҳои асосии git reset фарқ мекунанд дар сатҳи таъсир ба индекс ва директорияи корӣ:
-
git reset --soft <commit>
- HEAD-ро ба коммити нишоншуда кӯчондан.
- Тағйиротҳо дар индекс ва директорияи корӣ боқӣ мемонанд.
- Агар мехоҳед коммитҳоро бекор кунед, аммо тағйиротҳоро барои коммити нав нигоҳ доред.
-
git reset --mixed <commit> (тавсияшуда)
- HEAD-ро ба коммити нишоншуда кӯчондан.
- Тағйиротҳо аз индекс (staged) хориҷ мешаванд, аммо дар директорияи корӣ боқӣ мемонанд.
- Имкон медиҳад, ки индекс кардани тағйиротҳоро бекор кунед, бе тоза кардани онҳо аз файлҳо.
-
git reset --hard <commit>
- HEAD-ро ба коммити нишоншуда кӯчондан.
- Индекс ва директорияи кориро ба ҳолати он коммит баргардонед.
- Ҳама тағйиротҳои номуайян нобуд мешаванд.
Масалан:
# Бекор кардани коммити охирин, бо нигоҳ доштани тағйирот дар индекс
git reset --soft HEAD~1
# Бекор кардани коммити охирин ва хориҷ кардани тағйирот аз индекс, аммо нигоҳ доштани онҳо дар файлҳо
git reset --mixed HEAD~1
# Баргардони пурра ба охирин коммит ва тағйирот
git reset --hard HEAD~1
Муҳим аст, ки --hard бо эҳтиёт истифода шавад, то маълумоти муҳим нобуд нашаванд.