Git Revert

1 λεπτά

Πίνακας περιεχομένων

  1. Τι είναι το revert;
  2. Revert έναντι reset
  3. Άμεση πρακτική
  4. Περιπτώσεις χρήσης

1. Τι είναι το revert;

Git revert = Ακύρωση ΕΝΟΣ commit δημιουργώντας ένα ΝΕΟ αντίστροφο commit.

Κεντρική έννοια:

  • ΔΕΝ διαγράφει το ιστορικό
  • Δημιουργεί ένα commit που «αναιρεί» τις αλλαγές
  • Ασφαλές για ομαδική εργασία

Αναλογία: Είναι σαν να λέτε δημόσια «Ωχ, παίρνω πίσω αυτό που είπα».

Επιστροφή στον πίνακα περιεχομένων

2. Revert έναντι reset

Πτυχήgit revertgit reset
ΙστορικόΔιατηρείταιΤροποποιείται/Διαγράφεται
ΑσφάλειαΑσφαλές σε ομάδαΕπικίνδυνο αν είναι κοινόχρηστο
ΜέθοδοςΝέο αντίστροφο commitΕπιστροφή στον χρόνο
ΙχνηλασιμότηταΦαίνεται ότι ακυρώθηκεΣαν να μην είχε υπάρξει ποτέ

Απλός κανόνας:

  • Commit ήδη κοινόχρηστο → revert
  • Commit ακόμα τοπικό → reset

Επιστροφή στον πίνακα περιεχομένων

3. Άμεση πρακτική

bash
mkdir 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                     # Επαλήθευση του περιεχομένου

Επιστροφή στον πίνακα περιεχομένων

4. Περιπτώσεις χρήσης

Τυπικές καταστάσεις:

  1. Σφάλμα στην παραγωγή:

    bash
    git revert <commit-buggy>    # Καθαρή ακύρωση
    git push origin main         # Άμεση διόρθωση
  2. Η λειτουργία δημιουργεί πρόβλημα:

    bash
    git revert <commit-feature>  # Απόσυρση της λειτουργίας
    # Διατήρηση του ιστορικού για αργότερα
  3. Ακύρωση πολλών commits:

    bash
    git revert <commit1> <commit2> <commit3>
    # Ή με μία κίνηση:
    git revert <oldest-commit>..<newest-commit>

Revert = το δίχτυ ασφαλείας σας όταν όλα πάνε στραβά!

Επιστροφή στον πίνακα περιεχομένων