Sobes.tech
Junior

Πώς ακυρώνετε το τελευταίο commit στο σύστημα ελέγχου εκδόσεων;

sobes.tech AI

Απάντηση από AI

Υπάρχουν διάφοροι τρόποι να αναιρέσετε το τελευταίο commit, ανάλογα με το αν έχει αποσταλεί στο αποθετήριο απομακρυσμένου και ποιος είναι ο σκοπός της ακύρωσης.

  1. Ακύρωση τοπικού commit χωρίς αλλαγή αρχείων (soft reset):

    git reset --soft HEAD~1
    # Επαναφέρει το HEAD ένα commit πίσω, οι αλλαγές παραμένουν στο index (staged).
    
  2. Ακύρωση τοπικού commit αφήνοντας τις αλλαγές στον κατάλογο εργασίας (mixed reset - προεπιλογή):

    git reset HEAD~1
    # Επαναφέρει το HEAD ένα commit πίσω. Οι αλλαγές παραμένουν στον κατάλογο εργασίας (unstaged).
    
  3. Πλήρης ακύρωση τοπικού commit, συμπεριλαμβανομένης της διαγραφής αλλαγών από τον κατάλογο εργασίας και το index (hard reset):

    git reset --hard HEAD~1
    # Επαναφέρει το HEAD ένα commit πίσω και ακυρώνει όλες τις τοπικές αλλαγές. Προσοχή! Απώλεια δεδομένων.
    
  4. Ακύρωση ενός commit που έχει ήδη αποσταλεί στο απομακρυσμένο αποθετήριο, δημιουργώντας ένα νέο commit που αναιρεί τις αλλαγές του προηγούμενου:

    git revert HEAD
    # Δημιουργεί ένα νέο commit που αντιστρέφει τις αλλαγές του τελευταίου commit. Ασφαλές για δημόσιες κλαδώσεις.
    

Η επιλογή της μεθόδου εξαρτάται από την κατάσταση. Για δημόσιες κλαδώσεις, συνιστάται η χρήση του git revert, καθώς δεν αλλάζει το ιστορικό των commits. Για τοπικές αλλαγές ή κλαδώσεις στις οποίες εργάζεστε μόνος, μπορείτε να χρησιμοποιήσετε το git reset.