როგორ გაუქმოთ ბოლო commit ვერსიების კონტროლის სისტემაში?
sobes.tech AI
პასუხი AI-სგან
ბოლოსა და ბოლოს გაკეთებული კომიტის გაუქმების რამდენიმე გზა არსებობს, ეს დამოკიდებულია იმაზე, იყო თუ არა ის გადაგზავნილი დისტანციურ საცავში და რა არის გაუქმების მიზანი.
-
ადგილობრივი კომიტის გაუქმება ფაილების ცვლილების გარეშე (soft reset):
git reset --soft HEAD~1 # უკან იხევს HEAD-ს ერთ კომიტით, ცვლილებები რჩება ინდექსში (staged). -
ადგილობრივი კომიტის გაუქმება, ცვლილებების შენარჩუნება სამუშაო დირექტორიაში (mixed reset - დეფოლტ):
git reset HEAD~1 # უკან იხევს HEAD-ს ერთ კომიტით. ცვლილებები რჩება სამუშაო დირექტორიაში (unstaged). -
სრულიად გაუქმება ადგილობრივი კომიტი, ცვლილებების წაშლა სამუშაო დირექტორიიდან და ინდექსიდან (hard reset):
git reset --hard HEAD~1 # უკან იხევს HEAD-ს ერთ კომიტით და წაშლის ყველა ადგილობრივ ცვლილებებს. ყურადღება! მონაცემების დაკარგვა. -
უკვე გადაგზავნილი კომიტის გაუქმება დისტანციურ საცავში, ახალი კომიტის შექმნით, რომელიც ანულირებს წინამორბედ ცვლილებებს:
git revert HEAD # ქმნის ახალ კომიტს, რომელიც ანულირებს ბოლო კომიტის ცვლილებებს. უსაფრთხოა საჯარო ტოტებში.
მეთოდის არჩევა დამოკიდებულია სიტუაციაზე. საჯარო ტოტებისთვის რეკომენდებულია git revert გამოყენება, რადგან ის არ იცვლის კომიტების ისტორიას. ადგილობრივი ცვლილებებისთვის ან იმ ტოტებისთვის, რომელზეც მარტო მუშაობთ, შეგიძლიათ გამოიყენოთ git reset.