Πώς ακυρώνετε το τελευταίο commit στο σύστημα ελέγχου εκδόσεων;
sobes.tech AI
Απάντηση από AI
Υπάρχουν διάφοροι τρόποι να αναιρέσετε το τελευταίο commit, ανάλογα με το αν έχει αποσταλεί στο αποθετήριο απομακρυσμένου και ποιος είναι ο σκοπός της ακύρωσης.
-
Ακύρωση τοπικού commit χωρίς αλλαγή αρχείων (soft reset):
git reset --soft HEAD~1 # Επαναφέρει το HEAD ένα commit πίσω, οι αλλαγές παραμένουν στο index (staged). -
Ακύρωση τοπικού commit αφήνοντας τις αλλαγές στον κατάλογο εργασίας (mixed reset - προεπιλογή):
git reset HEAD~1 # Επαναφέρει το HEAD ένα commit πίσω. Οι αλλαγές παραμένουν στον κατάλογο εργασίας (unstaged). -
Πλήρης ακύρωση τοπικού commit, συμπεριλαμβανομένης της διαγραφής αλλαγών από τον κατάλογο εργασίας και το index (hard reset):
git reset --hard HEAD~1 # Επαναφέρει το HEAD ένα commit πίσω και ακυρώνει όλες τις τοπικές αλλαγές. Προσοχή! Απώλεια δεδομένων. -
Ακύρωση ενός commit που έχει ήδη αποσταλεί στο απομακρυσμένο αποθετήριο, δημιουργώντας ένα νέο commit που αναιρεί τις αλλαγές του προηγούμενου:
git revert HEAD # Δημιουργεί ένα νέο commit που αντιστρέφει τις αλλαγές του τελευταίου commit. Ασφαλές για δημόσιες κλαδώσεις.
Η επιλογή της μεθόδου εξαρτάται από την κατάσταση. Για δημόσιες κλαδώσεις, συνιστάται η χρήση του git revert, καθώς δεν αλλάζει το ιστορικό των commits. Για τοπικές αλλαγές ή κλαδώσεις στις οποίες εργάζεστε μόνος, μπορείτε να χρησιμοποιήσετε το git reset.