Git revert = Ακύρωση ΕΝΟΣ commit δημιουργώντας ένα ΝΕΟ αντίστροφο commit.
Κεντρική έννοια:
Αναλογία: Είναι σαν να λέτε δημόσια «Ωχ, παίρνω πίσω αυτό που είπα».
| Πτυχή | git revert | git reset |
|---|---|---|
| Ιστορικό | Διατηρείται | Τροποποιείται/Διαγράφεται |
| Ασφάλεια | Ασφαλές σε ομάδα | Επικίνδυνο αν είναι κοινόχρηστο |
| Μέθοδος | Νέο αντίστροφο commit | Επιστροφή στον χρόνο |
| Ιχνηλασιμότητα | Φαίνεται ότι ακυρώθηκε | Σαν να μην είχε υπάρξει ποτέ |
Απλός κανόνας:
revertresetmkdir demo-revert && cd demo-revert
git init
echo "print('Version 1')" > app.py
git add . && git commit -m "Version 1"
echo "print('Version 2 - Bug!')" > app.py
git add . && git commit -m "Version 2 avec bug"
echo "print('Version 3')" > app.py
git add . && git commit -m "Version 3"
# Ωχ! Η έκδοση 2 είχε ένα σφάλμα
git log --oneline # Προβολή του ιστορικού
git revert <hash-version-2> # Ακύρωση ΜΟΝΟ της έκδοσης 2
# Αποτέλεσμα: η έκδοση 3 μένει, αλλά το σφάλμα της v2 ακυρώνεται!
cat app.py # Επαλήθευση του περιεχομένουΤυπικές καταστάσεις:
Σφάλμα στην παραγωγή:
git revert <commit-buggy> # Καθαρή ακύρωση
git push origin main # Άμεση διόρθωσηΗ λειτουργία δημιουργεί πρόβλημα:
git revert <commit-feature> # Απόσυρση της λειτουργίας
# Διατήρηση του ιστορικού για αργότεραΑκύρωση πολλών commits:
git revert <commit1> <commit2> <commit3>
# Ή με μία κίνηση:
git revert <oldest-commit>..<newest-commit>Revert = το δίχτυ ασφαλείας σας όταν όλα πάνε στραβά!