# Πώς να αναιρέσετε αλλαγές στο Claude Code: /rewind και git

> Λειτουργίες επαναφοράς, περιορισμοί των checkpoints, git checkout, stash, reflog και προστασία από καταστροφικές εντολές. Πέντε τρόποι επαναφοράς μιας κατάστασης.

Source: https://ailoot.ai/blog/el/claude-code-undo-changes/
Canonical: https://ailoot.ai/blog/el/claude-code-undo-changes/
Language: el
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-138
Revision: sha256-a0d5a56aa8385ce8d489610c00529185ae800a4803be1394f68b65cd4f3d2bb3




[Πρακτικές πληροφορίες για την εργασία με το Ailoot είναι διαθέσιμες στην τεκμηρίωση](https://ailoot.ai/docs/).

## Τι είναι η αναίρεση στο Claude Code και γιατί δεν αρκούν τρία επίπεδα;

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Κύριο συμπέρασμα αυτής της ενότητας">

Κύρια σημεία

Η αναίρεση στο Claude Code έχει τρία επίπεδα: την ενσωματωμένη εντολή `/rewind` (άμεση ανάκτηση μέσα σε μια συνεδρία), το `git checkout` (επαναφορά στην τελευταία υποβολή) και το `git reflog` (δίχτυ ασφαλείας για καταστροφικές περιπτώσεις, αν κάποιος εκτελέσει `git reset --hard`). Κάθε επίπεδο καλύπτει τη δική του κατηγορία σφαλμάτων και τίποτε πέρα από τα όριά του. Αν γνωρίζετε μόνο το `/rewind`, θα βρεθείτε εκτεθειμένοι στο πρώτο σοβαρό λάθος.

</div>

Ενεργοποίησα το `/rewind` την πρώτη εβδομάδα που χρησιμοποιούσα το Claude Code, όταν χάλασε τη λογική ελέγχου ταυτότητας του έργου μου με δύο προτροπές. Έκανα επαναφορά, πήρα ανάσα και συνέχισα. Έναν μήνα αργότερα προέκυψε άλλη κατάσταση: έγραφα μια μετεγκατάσταση σχήματος, το Claude με βοήθησε, έκανα commit, άλλαξα κλάδο και συνειδητοποίησα ότι είχα ξεχάσει ένα απαραίτητο βήμα. Το `/rewind` δεν βοήθησε—η συνεδρία ήταν ήδη διαφορετική. Με βοήθησε το `git checkout` στην προηγούμενη υποβολή. Έναν μήνα μετά, είπα κατά λάθος στον agent «επανάφερε τα πάντα στην τελευταία προώθηση» και εκτέλεσε `git reset --hard`, καταστρέφοντας τρεις ώρες δουλειάς. Το `git reflog` με έσωσε—τα hashes των κατεστραμμένων υποβολών ήταν ακόμη εκεί.

Αυτές οι τρεις ιστορίες αντιπροσωπεύουν τρία επίπεδα προστασίας που λειτουργούν διαφορετικά, εντοπίζουν διαφορετικά σφάλματα και είναι όλα απαραίτητα. Αυτός ο οδηγός εξηγεί κάθε επίπεδο με τις εντολές, τους περιορισμούς και τα παραδείγματά του, και δείχνει πώς να ρυθμίσετε εκ των προτέρων ένα έργο ώστε το Claude να μην το καταστρέψει εξαρχής.

**3 επίπεδα αναίρεσης—τι κάνουν και πότε τα χρησιμοποιείτε:**

| Επίπεδο | Εντολή | Καλύπτει | ΔΕΝ καλύπτει |
|----|----|----|----|
| 1\. Μέσα σε μια συνεδρία | `/rewind` ή `Esc Esc` | Αρχεία που άλλαξε το Claude μέσω των δικών του εργαλείων· ιστορικό συνομιλίας | Εντολές Bash, εξωτερικούς επεξεργαστές, μετεγκαταστάσεις βάσεων δεδομένων |
| 2\. Πριν από commit | `git checkout .` ή `git stash` | Όλες τις μη υποβεβλημένες αλλαγές σε αρχεία | Υποβεβλημένα commits |
| 3\. Καταστροφή | `git reflog` + `git reset --hard <hash>` | Υποβολές που καταστράφηκαν από `reset --hard` ή force-push | Καταστροφικές εντολές Bash (rm, μετεγκαταστάσεις βάσεων δεδομένων) |

Στη συνέχεια θα εξετάσουμε κάθε επίπεδο—τι ακριβώς πρέπει να κάνετε, τις παγίδες και πώς να ρυθμίσετε τα πράγματα ώστε να μην υπάρχει τίποτα για αναίρεση, επειδή τίποτα δεν χάλασε.

## Πώς καλείτε το /rewind: με εντολή ή με Esc-Esc;

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Κύριο συμπέρασμα αυτής της ενότητας">

Κύρια σημεία

Υπάρχουν δύο τρόποι να ανοίξετε το μενού Rewind στο Claude Code. Ο πρώτος είναι να πληκτρολογήσετε `/rewind` στο πεδίο εισαγωγής. Ο δεύτερος είναι να πατήσετε `Esc` δύο φορές όταν το πεδίο εισαγωγής είναι κενό. Αν υπάρχει κείμενο στο πεδίο, το διπλό πάτημα του Esc πρώτα το διαγράφει και αποθηκεύει τα περιεχόμενά του στο ιστορικό εισαγωγής· ένα ακόμη διπλό πάτημα ανοίγει το μενού. Η εντολή `/rewind` έχει ως ψευδώνυμο το `/checkpoint`.

</div>

Μετά από κάθε απάντηση, το Claude δημιουργεί αυτόματα ένα στιγμιότυπο όλων των αρχείων που επεξεργάστηκε σε εκείνη τη συνεδρία. Τα στιγμιότυπα αποθηκεύονται στο `~/.claude/file-history/{sessionId}/` και διατηρούνται έως και 30 ημέρες. Είναι σταδιακά—αποθηκεύονται μόνο οι διαφορές μεταξύ των καταστάσεων, όχι ολόκληρο το αρχείο. Από προεπιλογή, αποθηκεύονται έως και 100 στιγμιότυπα ανά συνεδρία. Αυτό σημαίνει ότι στα περισσότερα πραγματικά έργα έχετε ανά πάσα στιγμή πλήρες ιστορικό όλων των αλλαγών του Claude κατά τη διάρκεια της εργάσιμης ημέρας.

Για να ανοίξετε το μενού επαναφοράς, πατήστε `Esc` δύο φορές όταν το πεδίο εισαγωγής είναι κενό:

```
[το πεδίο εισαγωγής χρήστη είναι κενό]
> _

[πατήστε Esc, Esc]

Σε ποιο μήνυμα θέλετε να γίνει επαναφορά;
  1. Δημιουργία μετεγκατάστασης για τον πίνακα User          (άλλαξαν 3 αρχεία)
  2. Προσθήκη του πεδίου lastLoginAt                       (άλλαξε 1 αρχείο)
  3. Επανεγγραφή της λογικής εξουσιοδότησης                 (άλλαξαν 5 αρχεία)
  ...
```

Αν υπάρχει κείμενο στο πεδίο εισαγωγής, το πρώτο διπλό πάτημα του `Esc` το διαγράφει και το αποθηκεύει στο ιστορικό `Up`. Αυτό είναι χρήσιμο όταν έχετε ήδη αρχίσει να πληκτρολογείτε και συνειδητοποιείτε ότι χρειάζεστε επαναφορά. Ένα απόσπασμα από την επίσημη τεκμηρίωση της Anthropic:

<figure>
<blockquote>
<p>Αν υπάρχει κείμενο στο πεδίο προτροπής, το διπλό πάτημα του Esc πρώτα το διαγράφει αντί να ανοίξει το μενού. Το κείμενο που διαγράφηκε αποθηκεύεται στο ιστορικό εισαγωγής, ώστε να μπορείτε να το επαναφέρετε με το επάνω βέλος μετά το μενού επαναφοράς.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/checkpointing</figcaption>
</figure>

Η εντολή `/rewind` κάνει το ίδιο—ανοίγει το μενού. Υπάρχει και το ψευδώνυμο `/checkpoint`, που οδηγεί στο ίδιο σημείο. Το ποια μέθοδος είναι πιο βολική είναι θέμα συνήθειας. Χρησιμοποιώ `Esc Esc`—είναι πιο γρήγορο και δεν χρειάζεται να απομακρύνω τα χέρια μου από το πληκτρολόγιο.

## 6 λειτουργίες στο μενού Rewind: ποια να επιλέξετε και πότε;

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Κύριο συμπέρασμα αυτής της ενότητας">

Κύρια σημεία

Αφού επιλέξετε ένα σημείο επαναφοράς στο μενού Rewind, εμφανίζεται ένα δεύτερο μενού με έξι λειτουργίες. Τρεις επαναφέρουν την κατάσταση (`Restore code and conversation`, `Restore conversation`, `Restore code`), δύο συμπτύσσουν το ιστορικό (`Summarize from here`, `Summarize up to here`) και μία ακυρώνει την ενέργεια (`Never mind`). Το συνηθέστερο σενάριο—«επαναφορά τόσο του κώδικα όσο και της συνομιλίας»—είναι η πρώτη επιλογή.

</div>

Επιλέξτε ένα σημείο στη λίστα και θα μεταβείτε στο μενού ενεργειών. Έξι επιλογές, καθεμία με διαφορετική λειτουργία.

**Πλήρης πίνακας λειτουργιών:**

| Λειτουργία | Τι κάνει | Πότε να την επιλέξετε |
|----|----|----|
| `Restore code and conversation` | Επαναφέρει τόσο τα αρχεία όσο και το ιστορικό συνομιλίας στο επιλεγμένο σημείο | Το συνηθέστερο σενάριο: το Claude πήρε λάθος κατεύθυνση και θέλω να ξεκινήσω ξανά με τη σωστή διατύπωση |
| `Restore conversation` | Επαναφέρει μόνο το ιστορικό συνομιλίας· τα αρχεία παραμένουν όπως είναι τώρα | Ο κώδικας είναι καλός, αλλά η συνομιλία ξέφυγε· θα διατυπώσω ξανά από αυτό το σημείο, διατηρώντας τις τρέχουσες αλλαγές |
| `Restore code` | Επαναφέρει τα αρχεία· η συνομιλία παραμένει όπως είναι | Κάποιες αλλαγές του Claude ήταν περιττές, αλλά χρειάζομαι ακόμη το πλαίσιο της συνομιλίας (για παράδειγμα, συμφωνήσαμε στα επόμενα βήματα) |
| `Summarize from here` | Συμπτύσσει σε περίληψη όλα όσα έγιναν ΜΕΤΑ το επιλεγμένο σημείο. Δεν αγγίζει τα αρχεία | Μια μακρά συνεδρία εντοπισμού σφαλμάτων εξάντλησε το πλαίσιο· χρειάζομαι χώρο, διατηρώντας πλήρεις τις αρχικές οδηγίες |
| `Summarize up to here` | Συμπτύσσει σε περίληψη όλα όσα έγιναν ΠΡΙΝ από το επιλεγμένο σημείο. Δεν αγγίζει τα αρχεία | Υπήρξε μια μακρά αρχική ενημέρωση και ακολούθησε μια συγκεκριμένη εργασία—συμπτύσσουμε την ενημέρωση σε ένα μήνυμα και αφήνουμε την πρόσφατη εργασία ως έχει |
| `Never mind` | Κλείνει το μενού χωρίς αλλαγές | Άλλαξα γνώμη |

Η λειτουργία `Summarize up to here` εμφανίστηκε στις εκδόσεις Claude Code v2.1.139-v2.1.142, που κυκλοφόρησαν στις 11–15 Μαΐου 2026, την εβδομάδα 20:

<figure>
<blockquote>
<p>Μπορείτε να συμπτύξετε το αρχικό πλαίσιο μέσω του μενού Rewind, χρησιμοποιώντας το 'Summarize up to here'.</p>
</blockquote>
<figcaption>— Anthropic What's new, https://code.claude.com/docs/en/whats-new</figcaption>
</figure>

Η διαφορά μεταξύ `Restore` και `Summarize` είναι θεμελιώδης. Το Restore επιστρέφει σε προηγούμενη κατάσταση, αναιρώντας όλα όσα συνέβησαν μετά το επιλεγμένο σημείο. Το Summarize δεν αναιρεί τίποτα· απλώς συμπτύσσει—τα αρχικά μηνύματα παραμένουν στο απομαγνητοφωνημένο ιστορικό της συνεδρίας για αναφορά, αλλά στο ενεργό πλαίσιο μένει μόνο η περίληψη. Χρησιμοποιήστε το restore όταν θέλετε να είναι «σαν να μην έγινε ποτέ». Χρησιμοποιήστε το summarize όταν θέλετε «να το κρατήσετε, αλλά να μην καταλαμβάνει χώρο στο πλαίσιο».

Μετά τα `Restore conversation` ή `Summarize from here`, το αρχικό κείμενο της επιλεγμένης προτροπής επιστρέφει στο πεδίο εισαγωγής—μπορείτε να το επεξεργαστείτε και να το στείλετε ξανά. Μετά το `Summarize up to here`, το πεδίο εισαγωγής είναι κενό και παραμένετε στο τέλος της συνομιλίας.

## Ποιες αλλαγές ΔΕΝ αναιρεί το /rewind;

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Κύριο συμπέρασμα αυτής της ενότητας">

Κύρια σημεία

Το `/rewind` παρακολουθεί μόνο αλλαγές που έγιναν από το Claude μέσω των δικών του εργαλείων επεξεργασίας αρχείων. Δεν μπορεί να δει ή να επαναφέρει οτιδήποτε άλλο. Υπάρχουν τρεις κατηγορίες αόρατων αλλαγών: εντολές Bash (rm, mv, cp), εξωτερικές επεξεργασίες (χειροκίνητες αλλαγές σας σε IDE, αλλαγές από άλλες συνεδρίες) και ενέργειες εκτός αρχείων (μετεγκαταστάσεις βάσεων δεδομένων, git push, κλήσεις απομακρυσμένων API).

</div>

Αυτός είναι ο κύριος περιορισμός που συναντούν οι χρήστες: το `/rewind` εμφανίζει πράσινο σημάδι επιλογής και λέει «η επαναφορά ολοκληρώθηκε με επιτυχία», αλλά το έργο παραμένει χαλασμένο επειδή το Claude πείραξε περισσότερα από αρχεία. Ας εξετάσουμε τις τρεις περιπτώσεις.

**1. Οι εντολές Bash δεν παρακολουθούνται.** Αν το Claude εκτελέσει `rm file.txt` ή `mv old.txt new.txt` σε έναν γύρο, αυτές οι αλλαγές δεν θα συμπεριληφθούν στο checkpoint. Η τεκμηρίωση της Anthropic αναφέρει ρητά:

<figure>
<blockquote>
<p>Το checkpointing δεν παρακολουθεί αρχεία που τροποποιήθηκαν μέσω εντολών bash. Για παράδειγμα, αν το Claude Code εκτελέσει rm file.txt, mv old.txt new.txt, cp source.txt dest.txt, αυτές οι αλλαγές αρχείων δεν μπορούν να αναιρεθούν μέσω rewind.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/checkpointing</figcaption>
</figure>

Αυτό σημαίνει ότι αν το Claude διαγράψει, μετακινήσει ή αντιγράψει μόνο του ένα αρχείο μέσω του εργαλείου bash, το `/rewind` δεν θα επαναφέρει τα πάντα. Μπορούν να βοηθήσουν το `git checkout` ή η επαναφορά από αντίγραφο ασφαλείας, αλλά αυτό απαιτεί περισσότερα από το πάτημα δύο πλήκτρων.

**2. Οι εξωτερικές αλλαγές δεν εντοπίζονται.** Αν ανοίξετε χειροκίνητα ένα αρχείο στο VS Code και αλλάξετε κάτι ή αν μια δεύτερη συνεδρία Claude αλλάξει τα ίδια αρχεία παράλληλα, η πρώτη συνεδρία δεν μπορεί να δει αυτές τις αλλαγές. Το στιγμιότυπο checkpoint λαμβάνεται όταν το Claude ολοκληρώνει έναν γύρο στην τρέχουσα συνεδρία. Ό,τι συμβαίνει μεταξύ των γύρων δεν εμπίπτει στην ευθύνη του.

**3. Οι ενέργειες εκτός αρχείων δεν καλύπτονται καθόλου.** Μια μετεγκατάσταση Prisma που εφαρμόστηκε μέσω `npx prisma migrate dev` άλλαξε το σχήμα της βάσης δεδομένων—το `/rewind` δεν θα την αναιρέσει, επειδή η βάση δεδομένων βρίσκεται έξω από το σύστημα αρχείων του έργου. Το ίδιο ισχύει για force-push στο `origin/main`: η υποβολή πήγε στον απομακρυσμένο διακομιστή και το checkpoint δεν θα την επαναφέρει. Μια κλήση απομακρυσμένου API που χρέωσε χρήματα ή διέγραψε μια εγγραφή μπορεί να αναιρεθεί μόνο μέσω των μηχανισμών του ίδιου του API.

**Κανόνας:** Αν μια εργασία επηρεάζει οτιδήποτε έξω από τα αρχεία του έργου—μετεγκαταστάσεις βάσεων δεδομένων, git push, απομακρυσμένα API—προετοιμάστε ξεχωριστή στρατηγική επαναφοράς για κάθε εξωτερική επίδραση. Το `/rewind` αφορά μόνο το τοπικό ιστορικό αρχείων μέσα στην τρέχουσα συνεδρία.

## /rewind και git: ποιες είναι οι διαφορές τους και γιατί χρειάζεστε και τα δύο;

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Κύριο συμπέρασμα αυτής της ενότητας">

Κύρια σημεία

Το `/rewind` είναι τοπική επαναφορά μέσα σε μία συνεδρία Claude Code. Αποθηκεύει σταδιακά στιγμιότυπα έως και 30 ημέρες, έως και 100 ανά συνεδρία. Το git είναι μακροπρόθεσμο ιστορικό έργου, κοινό για την ομάδα, με κλάδους, συγκρούσεις συγχώνευσης και απομακρυσμένο αποθετήριο. Το ένα δεν αντικαθιστά το άλλο. Η καλύτερη πρακτική είναι να κάνετε `git commit` σε κάθε λογικό ορόσημο και να βασίζεστε στο `/rewind` μεταξύ των commits.

</div>

Η τεκμηρίωση της Anthropic περιγράφει άμεσα αυτόν τον συνδυασμό:

<figure>
<blockquote>
<p>Τα checkpoints έχουν σχεδιαστεί για γρήγορη ανάκτηση σε επίπεδο συνεδρίας. Για commits, κλάδους και μακροπρόθεσμο ιστορικό, συνεχίστε να χρησιμοποιείτε ένα σύστημα ελέγχου εκδόσεων (για παράδειγμα, Git). Τα checkpoints συμπληρώνουν, αλλά δεν αντικαθιστούν, τον κανονικό έλεγχο εκδόσεων. Σκεφτείτε τα checkpoints ως «τοπική αναίρεση» και το Git ως «μόνιμο ιστορικό».</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/checkpointing</figcaption>
</figure>

Οι διαφορές σε έναν πίνακα:

| Παράμετρος | /rewind | git |
|----|----|----|
| Κοκκώδες επίπεδο | Κάθε γύρος της συνομιλίας | Κάθε commit |
| Αποθήκευση | Έως και 30 ημέρες, έως και 100 ανά συνεδρία, τοπικά στο `~/.claude/file-history/` | Μόνιμα, στο `.git/` του αποθετηρίου και στον απομακρυσμένο διακομιστή |
| Τι παρακολουθεί | Τις επεξεργασίες του Claude μέσω των δικών του εργαλείων | Όλες τις υποβεβλημένες αλλαγές |
| Τι ΔΕΝ παρακολουθεί | Bash, εξωτερικές αλλαγές, μετεγκαταστάσεις, push | Μη υποβεβλημένες αλλαγές |
| Εντολή | Εντολή μέσα στο Claude | Εξωτερικό σύστημα ελέγχου εκδόσεων |
| Επαναφέρει τη συνομιλία | Ναι | Όχι |
| Λειτουργεί σε διαφορετικές συνεδρίες | Μόνο μέσα στην ίδια συνεδρία | Παντού |

Ο συνδυασμός είναι απλός: κάθε φορά που φτάνετε σε κατάσταση όπου «αυτό λειτουργεί και δεν θέλω να το χάσω», κάντε `git commit`. Μεταξύ των commits, βασιστείτε στο `/rewind`—είναι άμεσο, δεν απαιτεί μήνυμα commit και δεν γεμίζει το ιστορικό git με ενδιάμεσες καταστάσεις. Όταν ολοκληρωθεί η εργασία, κάντε commit—κατά προτίμηση ένα ουσιαστικό, ατομικό commit.

## Γιατί ένα /rewind δεν καλύπτει ολόκληρη την εργασία;

Η αναίρεση είναι μία περίπτωση **μηχανικής πλαισίου**. Διαχειριστείτε το πλαίσιο της συνεδρίας (πότε να κάνετε commit, πότε να πατήσετε `/rewind`, ποιους κανόνες να βάλετε στο `CLAUDE.md`) και θα έχετε ένα προβλέψιμο Claude που δεν καταστρέφει το έργο ούτε χάνει δουλειά.



## Γιατί το `git reset --hard` είναι επικίνδυνο όταν ζητάτε από το Claude να «επιστρέψει»;

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Κύριο συμπέρασμα αυτής της ενότητας">

Κύρια σημεία

Στη φυσική γλώσσα, το «επέστρεψε» σημαίνει «κοίταξε το ιστορικό», όχι «κατέστρεψέ το»· το Claude θα πρέπει από προεπιλογή να προτείνει `git checkout`, όχι `reset --hard`· η προστασία ρυθμίζεται στο CLAUDE.md.

</div>

Ένα αίτημα να «αποθηκεύσει την τρέχουσα κατάσταση και να επιστρέψει στην τελευταία προώθηση» μπορεί να οδηγήσει σε αυτές τις εντολές:

```bash
git stash save "WIP: Tracker enter/leave disabled + fsSyncModule fix"  # αποθήκευσε τις μη υποβεβλημένες αλλαγές
git reset --hard 35eb731                                                # κατέστρεψε τις υποβολές d63695e..882e618
```

Η πρώτη εντολή ήταν σωστή—αποθήκευσε τις μη υποβεβλημένες αλλαγές στο stash. Η δεύτερη ήταν καταστροφική: ξαναέγραψε τον κλάδο στην υποβολή `35eb731` και όλες οι υποβολές μεταξύ αυτής και της `882e618` έγιναν ορφανές. Από προεπιλογή, οι ορφανές υποβολές παραμένουν στο `.git/objects/` μέχρι να εκτελεστεί το `git gc`, κάτι που συνήθως συμβαίνει αυτόματα μέσα σε δύο εβδομάδες. Όμως, αν δεν γνωρίζατε τι να κάνετε εκείνη τη στιγμή, ο χρόνος ήδη εργαζόταν εναντίον σας.

Η λογική είναι απλή: στη φυσική γλώσσα, τα «επέστρεψε», «γύρνα πίσω», «επαναφορά», «αντιστροφή» και «αναίρεση» σημαίνουν «κοίτα πίσω» ή «επέστρεψε σε ασφαλές σημείο». Δεν σημαίνουν «κατέστρεψε το ιστορικό». Η εντολή `git reset --hard` το καταστρέφει—ξαναγράφει τον κλάδο και αφαιρεί τις υποβολές από εκείνες που είναι προσβάσιμες μέσω του HEAD. Μια ασφαλής εναλλακτική είναι το `git checkout <commit>`, που δημιουργεί detached HEAD και σας επιτρέπει να δείτε την παλιά κατάσταση χωρίς να αγγίξετε τους κλάδους.

Το κύριο πρακτικό συμπέρασμα είναι να κάνετε `git commit` στην τρέχουσα κατάσταση πριν από κάθε ουσιαστική εργασία, ειδικά πριν από αναδόμηση πολλών αρχείων. Ένα commit μετατρέπει οποιοδήποτε λάθος του Claude σε μία εντολή `git checkout .`, χωρίς απώλεια δουλειάς.

## Πώς σας σώζει το git reflog μετά από μια καταστροφική επαναφορά;

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Κύριο συμπέρασμα αυτής της ενότητας">

Κύρια σημεία

Το `git reflog` εμφανίζει το τοπικό ιστορικό όλων των μετακινήσεων του HEAD στο αποθετήριο—ακόμη και υποβολές που αφαιρέθηκαν μέσω `git reset --hard` ή force-push. Κάθε μετακίνηση αποθηκεύεται από προεπιλογή για 90 ημέρες. Αν το Claude (ή εσείς ή κάποιος άλλος) κατέστρεψε υποβολές με καταστροφική εντολή, το `git reflog` θα εμφανίσει τα hashes τους και μπορείτε να επαναφέρετε τον κλάδο με `git reset --hard <reflog-hash>`.

</div>

Μετά από ένα καταστροφικό reset, εκτελέστε αμέσως το `git reflog`:

```bash
git reflog
```

Το αποτέλεσμα μοιάζει κάπως έτσι:

```
35eb731 HEAD@{0}: reset: moving to 35eb731
882e618 HEAD@{1}: commit: middleware refactoring complete
d63695e HEAD@{2}: commit: leaveRemove method finalized
1f9c8a3 HEAD@{3}: commit: tracker enter/leave disabled
35eb731 HEAD@{4}: pull origin main
```

Τα `HEAD@{1}` έως `HEAD@{3}` είναι ακριβώς εκείνες οι «κατεστραμμένες» υποβολές. Δεν έχουν εξαφανιστεί από το τοπικό object store του git· απλώς δεν είναι πλέον προσβάσιμες μέσω του κλάδου. Για να τις επαναφέρετε:

```bash
# Δημιουργήστε έναν κλάδο από την τελευταία «κατεστραμμένη» υποβολή
git branch recovered-work 882e618

# Ή αλλάξτε απευθείας κλάδο
git reset --hard 882e618
```

Μετά από αυτό, ο κλάδος περιέχει ξανά όλο το ιστορικό μέχρι την καταστροφή.

**Περιορισμοί του Reflog:**

1.  **Μόνο τοπικά.** Το reflog αποθηκεύεται στο `.git/logs/HEAD`· δεν βρίσκεται στο απομακρυσμένο αποθετήριο. Αν κάνετε force-push και μετά διαγράψετε το τοπικό αντίγραφο του αποθετηρίου, το reflog χάνεται μαζί με τον φάκελο.
2.  **90 ημέρες από προεπιλογή.** Παλαιότερες καταχωρίσεις μπορεί να αφαιρεθούν από το git gc. Μπορείτε να το ρυθμίσετε με `git config gc.reflogExpire 200.days.ago`.
3.  **Δεν καλύπτει ό,τι δεν βρέθηκε ποτέ στο HEAD.** Αν μια υποβολή υπήρχε μόνο στο stash και το stash καταστράφηκε, το reflog θα εμφανίσει μόνο την πιο πρόσφατη κατάσταση του stash, όχι το εσωτερικό ιστορικό του.

**Κανόνας για την ομάδα:** μην εκτελείτε ποτέ `git gc --aggressive` αμέσως μετά από μια καταστροφή. Πρώτα διερευνήστε με reflog και ανακτήστε· όλα τα άλλα ακολουθούν. Και μην διαγράφετε ποτέ το τοπικό αντίγραφο του αποθετηρίου μέχρι να βεβαιωθείτε ότι έχουν προωθηθεί όλα όσα χρειάζεστε.

## Πώς προστατεύετε ένα έργο από καταστροφικές εντολές git μέσω του CLAUDE.md;

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Κύριο συμπέρασμα αυτής της ενότητας">

Κύρια σημεία

Στο `CLAUDE.md` του έργου σας, προσθέστε ένα σύνολο οδηγιών που ορίζει ποιες εντολές git μπορεί να εκτελεί το Claude μόνο του, ποιες απαιτούν ρητή επιβεβαίωση και ποιες απαγορεύονται χωρίς ακριβή φράση από τον χρήστη. Το Claude αντιμετωπίζει το CLAUDE.md ως προτροπή συστήματος του έργου και ακολουθεί αυτούς τους κανόνες από προεπιλογή. Έτσι, μια «επικίνδυνη» προτροπή μετατρέπεται σε δύο ασφαλείς εντολές.

</div>

Η ευπάθεια είναι ότι το Claude δεν έχει προστατευτικό πλαίσιο από προεπιλογή. Ερμηνεύει το «επέστρεψε» ως `git reset --hard`, επειδή τεχνικά είναι έγκυρη μέθοδος. Βάλτε την προστασία στο `CLAUDE.md`—το αρχείο προτροπής συστήματος του έργου.

**Ελάχιστος κανόνας** (προσθέστε τον στο `CLAUDE.md` σας):

```markdown
## Πρωτόκολλο ασφάλειας Git

- ΠΟΤΕ μην εκτελείτε καταστροφικές εντολές git (push --force, reset --hard, checkout ., restore ., clean -f, branch -D), εκτός αν ζητήσω ρητά αυτές τις ενέργειες. Η εκτέλεση μη εξουσιοδοτημένων καταστροφικών ενεργειών δεν βοηθά και μπορεί να οδηγήσει σε απώλεια εργασίας.
- Όταν λέω "επέστρεψε", "γύρνα πίσω", "επαναφορά", "αντιστροφή", "αναίρεση" - ερμήνευσέ το ως εντολές ΕΠΙΣΚΟΠΗΣΗΣ: χρησιμοποίησε `git log`, `git diff`, `git checkout <commit>` (δημιουργεί detached HEAD) ή `git stash` (διατηρεί τις αλλαγές).
- ΖΗΤΑ ΠΑΝΤΑ επιβεβαίωση πριν από ΟΠΟΙΑΔΗΠΟΤΕ εντολή που:
  - Αλλάζει τη θέση του HEAD σε διαφορετική υποβολή σε έναν κλάδο
  - Τροποποιεί το ιστορικό υποβολών
  - Θα μπορούσε να χάσει μη υποβεβλημένη εργασία
  - Περιλαμβάνει τις σημαίες --hard, --force, --aggressive
- Πριν από κάθε καταστροφική εντολή, εμφάνισε αριθμημένη σύγκριση:
  - ΑΣΦΑΛΕΣ: χρησιμοποίησε `git checkout <commit>` για προσωρινή προβολή
  - ΚΑΤΑΣΤΡΟΦΙΚΟ: χρησιμοποίησε `git reset --hard` για μόνιμη καταστροφή
- Περίμενε την ρητή επιλογή μου πριν από την εκτέλεση.
```

**Εκτεταμένος κανόνας** για την ομάδα (προσθέστε τον στο `CLAUDE.md` στη ρίζα του αποθετηρίου):

```markdown
## Κανόνες ροής εργασίας Git

- Κάνε commit σε κάθε λειτουργικό ορόσημο. Πριν από WIP commit, εκτέλεσε `git status` και `git diff`, πρόσθεσε στο staging μόνο ρητά ελεγμένα αρχεία με το όνομά τους μέσω `git add -- path/to/file` και εξέτασε το staged diff πριν το commit. Ένας χρονοδιακόπτης θυμίζει να ελέγξεις, δεν επιτρέπει να προσθέσεις ολόκληρο το δέντρο εργασίας.
- Μην χρησιμοποιείς ποτέ `git add .` ή `git add -A` για commits του Claude. Καθόριζε μόνο αρχεία με το όνομά τους, μετά από `git status` + `git diff`.
- Πριν από `git push --force` στο main—σταμάτα και ρώτησέ με. Σε κλάδους λειτουργιών, κάνε force-push με προσοχή, μόνο αν είσαι βέβαιος ότι δέχομαι να χάσω την προηγούμενη έκδοση.
- Κατά την επίλυση συγκρούσεων συγχώνευσης, μην επιλέγεις αμέσως "ours" ή "theirs"—δείξε μου πρώτα και τις δύο εκδοχές και μετά θα αποφασίσω.
- Το `.gitignore` πρέπει να περιέχει τα `.env*`, `.claude/personal/`, `node_modules/`, `dist/`. Αν λείπουν, πρόσθεσέ τα.
```

Αφού προστεθούν αυτά τα τμήματα, η επόμενη φράση «επέστρεψε στην τελευταία προώθηση» θα οδηγούσε σε αυτή την απάντηση:

> Βλέπω 3 μη υποβεβλημένα αρχεία και 4 υποβολές μετά την τελευταία προώθηση. Υπάρχουν δύο επιλογές:
>
> 1.  ΑΣΦΑΛΕΣ: δημιούργησε τον κλάδο `view-last-push` μέσω `git checkout <last-push-hash>`—θα διατηρήσω όλη τη δουλειά, αλλά θα εμφανίσω προσωρινά την κατάσταση της προώθησης.
> 2.  ΚΑΤΑΣΤΡΟΦΙΚΟ: `git reset --hard <last-push-hash>`—θα καταστρέψω οριστικά 4 υποβολές και τις μη υποβεβλημένες αλλαγές. Μπορούν να ανακτηθούν μόνο μέσω του `git reflog` μέσα σε 90 ημέρες. Ποια επιλογή κάνεις;

Αυτό σημαίνει μισό λεπτό συνομιλίας αντί για τέσσερις ώρες χαμένης δουλειάς.

## Ποιοι είναι οι 5 τρόποι αναίρεσης στο Claude Code και πώς επιλέγετε τον κατάλληλο;

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Κύριο συμπέρασμα αυτής της ενότητας">

Κύρια σημεία

Αν κάτι πάει στραβά, υπάρχουν πέντε επίπεδα απελπισίας: `/rewind` (μέσα σε συνεδρία), `git checkout .` (μη υποβεβλημένες αλλαγές), `git checkout <commit>` (επιστροφή σε παλιά υποβολή χωρίς απώλεια ιστορικού), `git reset --hard <commit>` (μετακίνηση του κλάδου προς τα πίσω, με απώλεια των υποβολών που ακολουθούν) και `git reflog` + ανάκτηση (καταστροφή, έχουν χαθεί όλα). Κάθε επίπεδο είναι βαρύτερο και πιο επικίνδυνο από το προηγούμενο.

</div>

Το σενάριο «το Claude το χάλασε, πρέπει να το επαναφέρω επειγόντως» ακολουθεί αυτή την κλίμακα από κάτω προς τα πάνω. Ξεκινάτε πάντα από το επίπεδο 1.

**Επίπεδο 1. `/rewind`—άμεση αναίρεση μέσα σε συνεδρία.**

Πατήστε `Esc Esc` ή πληκτρολογήστε `/rewind`. Επιλέξτε το σημείο πριν από το σφάλμα. Επιλέξτε μια λειτουργία (συνήθως `Restore code and conversation`). Ένα δευτερόλεπτο αργότερα, βρίσκεστε ξανά στο παρελθόν και μπορείτε να ξεκινήσετε από την αρχή. Καλύπτει το 80% των περιπτώσεων «το Claude έκανε κάτι λάθος».

**Επίπεδο 2. `git checkout .`—αναίρεση όλων των μη υποβεβλημένων αλλαγών.**

```bash
git diff                    # πρώτα δες τι άλλαξε πραγματικά
git checkout .              # αναίρεσε όλες τις μη υποβεβλημένες αλλαγές σε όλα τα αρχεία
# ή επιλεκτικά:
git checkout -- path/to/file.ts   # μόνο ένα αρχείο
```

Χρήσιμο όταν το `/rewind` δεν λειτούργησε (για παράδειγμα, το Claude πείραξε αρχεία μέσω bash) ή όταν χρειάζεται να αναιρέσετε αλλαγές εκτός του ιστορικού της συνεδρίας. Όλες οι μη υποβεβλημένες αλλαγές θα εξαφανιστούν οριστικά. Αν υπάρχει πιθανότητα να το μετανιώσετε, εκτελέστε πρώτα `git stash` (βλ. επίπεδο 2.5).

**Επίπεδο 2.5. `git stash`—βάλτε τις αλλαγές σας στο ράφι.**

```bash
git stash save "μπορεί να το χρειαστώ ακόμη"
# επιστροφή σε καθαρή κατάσταση (χωρίς αλλαγές)
# ...
# αν αλλάξετε γνώμη—επαναφέρετε από το stash:
git stash pop
```

Ένας καλός συμβιβασμός ανάμεσα στο «χάθηκαν για πάντα» και στο «τα αφήνω ως έχουν». Το stash παραμένει τοπικό μέχρι να διαγραφεί ρητά.

**Επίπεδο 3. `git checkout <commit>`—επιστροφή σε παλιά υποβολή χωρίς απώλεια ιστορικού.**

```bash
git log --oneline               # βρες το hash της σωστής υποβολής, π.χ. abc1234
git checkout abc1234            # detached HEAD—προβολή χωρίς αλλαγή
git checkout -b recovery abc1234 # αν σου αρέσει η κατάσταση, δημιούργησε κλάδο από αυτήν
# επιστροφή:
git checkout main
```

Αυτή είναι μια ασφαλής «προσωρινή επιστροφή». Το detached HEAD δεν αλλάζει τον κλάδο· η τρέχουσα εργασία σας στο `main` (ή στον κλάδο όπου βρισκόσασταν) παραμένει ανέπαφη. Αν θέλετε να εργαστείτε με αυτήν την κατάσταση, δημιουργήστε έναν κλάδο.

**Επίπεδο 4. `git reset --hard <commit>`—μετακίνηση του κλάδου σε ένα σημείο.**

⚠️ Καταστροφικό. Οι υποβολές μετά το καθορισμένο hash γίνονται ορφανές.

```bash
git reflog                                  # σημείωσε το hash της τρέχουσας κατάστασης
git reset --hard abc1234                    # ξαναγράψε τον κλάδο
# βρήκες λάθος; επέστρεψε μέσω reflog:
git reset --hard HEAD@{1}                   # στο σημείο που βρισκόσουν πριν από την επαναφορά
```

Χρησιμοποιήστε το μόνο αν είστε βέβαιοι ότι δεν χρειάζεστε τις υποβολές που ακολουθούν. Και να ελέγχετε πάντα το `git reflog` ΠΡΙΝ από το reset, ώστε να γνωρίζετε πού μπορείτε να επιστρέψετε αν αλλάξετε γνώμη.

**Επίπεδο 5. `git reflog` + ανάκτηση—καταστροφικό σενάριο.**

Κάποιος (το Claude, εσείς, ένας συνάδελφος) έχει ήδη εκτελέσει `git reset --hard` ή force-push και έχει σβήσει τη δουλειά. Τι κάνετε;

```bash
git reflog                                          # αναζήτησε το τελευταίο hash πριν από την καταστροφή
git branch recovered HEAD@{N}                       # δημιούργησε κλάδο από αυτό
git checkout recovered                              # μετάβαση σε αυτόν
git diff main                                       # σύγκριση με την τρέχουσα κατάσταση
git checkout main && git merge recovered            # επαναφορά στο main, αν είσαι βέβαιος
```

Αν το reflog έχει ήδη εκκαθαριστεί (μετά από 90 ημέρες από προεπιλογή), η τελευταία λύση είναι το `git fsck --lost-found`, που θα εμφανίσει τις ορφανές υποβολές στο `.git/objects/`. Είναι σχεδόν αρχαιολογία, αλλά μερικές φορές λειτουργεί.

**Κανόνας επιλογής επιπέδου:**

| Τι συνέβη | Επίπεδο |
|-----------------------------------------------|-----------------------------|
| Το Claude ξαναέγραψε 3 αρχεία με λάθος τρόπο | 1\. `/rewind` |
| Το δοκίμασα, δεν μου άρεσε και η συνεδρία δεν βοηθά | 2\. `git checkout .` |
| Το χάλασα χειροκίνητα, δεν θέλω να το χάσω, ίσως το επαναφέρω | 2.5. `git stash` |
| Έκανα commit· χρειάζεται να επιστρέψω μία υποβολή πίσω | 3\. `git checkout <commit>` |
| Είμαι βέβαιος ότι δεν χρειάζομαι τις υποβολές που ακολουθούν | 4\. `git reset --hard` |
| Το έχω ήδη σβήσει με καταστροφική εντολή | 5\. `git reflog` |

## Πώς προστατεύετε ένα έργο ώστε να μην υπάρχει τίποτα για αναίρεση;

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Κύριο συμπέρασμα αυτής της ενότητας">

Κύρια σημεία

Η καλύτερη αναίρεση είναι εκείνη που δεν χρειάζεστε. Τρεις κανόνες προστασίας: ελέγχετε την πρόοδο κάθε 30 λεπτά και κάντε commit σε λειτουργικό ορόσημο προσθέτοντας ρητά μόνο ελεγμένες διαδρομές· βάλτε στο `.gitignore` τις απαιτούμενες γραμμές `.claude/personal/` και `.env*`· κάντε μεγάλα πειράματα σε ξεχωριστό κλάδο με `git checkout -b experiment-<name>`. Αυτό περιορίζει το κενό ανάκτησης για αρχεία που έχουν γίνει commit· εξωτερικά συστήματα και εργασία χωρίς commit εξακολουθούν να χρειάζονται δικό τους σχέδιο ανάκτησης.

</div>

**Κανόνας 1. Κάντε commit κάθε 30 λεπτά.**

Μην περιμένετε μέχρι «να ολοκληρωθεί η εργασία». Κάντε commit σε κάθε ενδιάμεσο βήμα που λειτουργεί. Τα μηνύματα commit μπορεί να είναι οτιδήποτε· το σημαντικό είναι να μπορεί το Claude (ή εσείς) να επιστρέψει σε μια λειτουργική κατάσταση με μία εντολή `git checkout`.

```bash
# στην αρχή μιας εργασίας
git status                        # εξέτασε όλες τις staged και unstaged διαδρομές
git diff                          # έλεγξε τις αλλαγές
# Αντικατάστησε τη διαδρομή παραδείγματος με το πραγματικό αρχείο που έλεγξες.
git add -- path/to/file.ts
git diff --cached                 # επαλήθευσε ακριβώς τι θα γίνει commit
git commit -m "wip: starting User schema migration"

# μετά από 30 λεπτά (ή μετά την πρώτη λειτουργική επανάληψη)
git status
git diff
git add -- path/to/file.ts         # πραγματική ελεγμένη διαδρομή, όχι wildcard φακέλου
git diff --cached
git commit -m "wip: User schema is ready, migration applied locally"

# στο τέλος της εργασίας—ένα ουσιαστικό commit
git reset --soft HEAD~2           # συνδύασε τα τρία wip commits σε ένα
git commit -m "feat(auth): add lastLoginAt field to User table"
```

Αν προσθέσετε υπενθύμιση PostToolUse, διατηρήστε τον ίδιο κανόνα ελέγχου και staging ρητών διαδρομών. Μη μετατρέπετε τον χρονοδιακόπτη σε ανεξέλεγκτο αυτόματο commit: διαφορετικά μπορεί να συμπεριληφθούν άσχετες αλλαγές ή ήδη staged αρχεία.

**Κανόνας 2. Ελάχιστο `.gitignore`.**

Αυτές οι γραμμές απαιτούνται στη ρίζα του έργου:

```gitignore
# μυστικά
.env
.env.local
.env.*.local

# τοπικές ρυθμίσεις Claude Code (δεν προωθούνται στο αποθετήριο της ομάδας)
.claude/personal/
.claude/sessions/
.claude/file-history/

# εξαρτήσεις και build
node_modules/
dist/
.next/
build/
```

Κρατώ τον φάκελο `.claude/personal/` για τα προσωπικά μου πειράματα και σημειώσεις, που δεν πρέπει να συμπεριλαμβάνονται στο κοινόχρηστο αποθετήριο. Οι φάκελοι `.claude/sessions/` και `.claude/file-history/` είναι τοπικός χώρος αποθήκευσης του Claude Code· δεν ανήκουν στο αποθετήριο, καταλαμβάνουν πολύ χώρο και συνδέονται με συγκεκριμένο μηχάνημα.

**Κανόνας 3. Πειράματα σε ξεχωριστό κλάδο.**

Αν η εργασία είναι μεγάλη (αναδόμηση 10+ αρχείων, μετεγκατάσταση σε νέα βάση δεδομένων, επανεγγραφή ενότητας), μην την κάνετε στον κύριο κλάδο:

```bash
git checkout -b experiment/auth-rewrite
# εργασία, commit κάθε 30 λεπτά
# αν λειτουργήσει:
git checkout main
git merge experiment/auth-rewrite
# αν δεν λειτουργήσει:
git checkout main
git branch -D experiment/auth-rewrite     # διαγραφή του κλάδου
# αυτό ήταν, ο κύριος κλάδος παραμένει ανέπαφος
```

Αυτή η απλή συνήθεια μετατρέπει το «το Claude κατέστρεψε το έργο» σε «το Claude κατέστρεψε έναν κλάδο, τον διέγραψα και ξεκινάμε ξανά».

**Κανόνας 4. Πριν από επικίνδυνες ενέργειες, χρησιμοποιήστε `git tag`.**

Πριν από μια μετεγκατάσταση βάσης δεδομένων, μια μεγάλη αναδόμηση ή μια ενημέρωση εξάρτησης, δημιουργήστε ένα tag:

```bash
git tag pre-prisma-migration-v2
# εργασία
# κάτι πήγε στραβά:
git reset --hard pre-prisma-migration-v2
# ή απλώς ρίξε μια ματιά:
git checkout pre-prisma-migration-v2
```

Ένα tag είναι ένας ονομασμένος δείκτης σε μια υποβολή που δεν θα χάσετε ακόμη και μετά την εκκαθάριση του reflog.

## Τι ακολουθεί: πώς εντάσσεται η αναίρεση στη μηχανική πλαισίου;

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Κύριο συμπέρασμα αυτής της ενότητας">

Κύρια σημεία

Η αναίρεση δεν είναι ξεχωριστή δεξιότητα, αλλά μέρος της διαχείρισης του πλαισίου συνεδρίας του Claude Code. Όταν γνωρίζετε πότε να πατήσετε `/rewind`, πότε να κάνετε `git commit` και πότε να εκτελέσετε `git stash`, διαχειρίζεστε ολόκληρη ροή εργασίας, όχι μία εντολή. Αυτό αποτελεί μέρος της **Μηχανικής Πλαισίου**. Χωρίς αυτήν, το Claude συμπεριφέρεται σαν συνηθισμένος βοηθός· με αυτήν, σαν προβλέψιμο εργαλείο.

</div>

Αυτά τα τρία επίπεδα αναίρεσης αποτελούν την υποδομή για μία δεξιότητα: να γνωρίζετε πώς να επαναφέρετε μια κατάσταση όταν χαλάσει. Από μόνη της, αυτή η δεξιότητα είναι περιορισμένη. Σε συνδυασμό όμως με άλλα εργαλεία μηχανικής πλαισίου, γίνεται κάτι περισσότερο.

Η Λειτουργία Σχεδιασμού δεν σας αφήνει να γράψετε αμέσως κώδικα—πρώτα έρχεται το σχέδιο, μετά η επιβεβαίωση και έπειτα η εκτέλεση. Αυτή είναι προληπτική αναίρεση: δεν γράφετε κάτι που αργότερα θα χρειαστεί να αναιρέσετε, επειδή το σχέδιο ελέγχθηκε εκ των προτέρων. Διαβάστε περισσότερα στον οδηγό για τη [Λειτουργία Σχεδιασμού στο Claude Code](https://ailoot.ai/blog/el/claude-code-plan-mode/).

Το [CLAUDE.md](https://ailoot.ai/blog/el/claude-md-template/) ορίζει κανόνες που το Claude σέβεται από προεπιλογή, συμπεριλαμβανομένου του Πρωτοκόλλου ασφάλειας Git που καλύψαμε παραπάνω. Πρόκειται για προληπτική προστασία από καταστροφικές εντολές.

Ο [Δεύτερος Εγκέφαλος](https://ailoot.ai/blog/el/claude-code-second-brain/) παρέχει στο Claude μνήμη για το έργο μεταξύ συνεδριών—γνωρίζει τι κώδικα έχετε, ποια είναι η επιχειρηματική λογική και ποιες συμφωνίες έγιναν νωρίτερα. Όσο περισσότερη μνήμη έχει, τόσο λιγότερο πιθανό είναι να κάνει κάτι λάθος.

Οι [Skills και οι subagents](https://ailoot.ai/blog/el/claude-code-skills-library/) είναι η μεθοδολογία σας σε κώδικα. Αν η σωστή ροή εργασίας git είναι ενσωματωμένη σε μια Skill, κανένας subagent δεν θα εκτελέσει `git reset --hard` χωρίς επιβεβαίωση.

Και όλα αυτά μαζί αποτελούν τη **Μηχανική Πλαισίου**. Διαχειριστείτε το πλαίσιο πριν από την προτροπή, όχι κατά τη διάρκειά της. Διαβάστε περισσότερα στο [τι είναι η μηχανική πλαισίου](https://ailoot.ai/blog/el/context-engineering/).

Η αναίρεση είναι η τελευταία γραμμή άμυνας. Η Λειτουργία Σχεδιασμού + το CLAUDE.md + ο Δεύτερος Εγκέφαλος + οι Skills είναι οι τέσσερις πρώτες. Όταν έχουν ρυθμιστεί, η αναίρεση γίνεται σπάνια και γρήγορη. Όταν δεν έχουν ρυθμιστεί, γίνεται καθημερινή τελετουργία.

<div class="section" role="doc-bibliography" aria-label="Πηγές">

### Πηγές

- [Anthropic Docs - Checkpointing](https://code.claude.com/docs/en/checkpointing)
- [Anthropic Docs - What's new (Week 20, 11-15 May 2026)](https://code.claude.com/docs/en/whats-new)
- [Anthropic Docs - Permission Modes](https://code.claude.com/docs/en/permission-modes)
- [Git Reference - reflog](https://git-scm.com/docs/git-reflog)

</div>

Η αναίρεση αρχίζει εκεί όπου τελειώνει ο σχεδιασμός.





[Μεταβείτε στο Ailoot](https://ailoot.ai/).

## Ερωτήσεις και απαντήσεις: Πώς να αναιρέσετε αλλαγές στο Claude Code: /rewind και git

### Πρέπει ένα WIP checkpoint να χρησιμοποιεί git add .;

Όχι. Εκτελέστε `git status` και `git diff`, προσθέστε στο staging μόνο τα ονομασμένα αρχεία που ελέγξατε και εξετάστε `git diff --cached` πριν κάνετε commit. Ένα περιοδικό checkpoint δεν εξουσιοδοτεί τη συμπερίληψη άσχετων ή ήδη staged αλλαγών.

### Το /rewind μπορεί να αναιρέσει μετεγκατάσταση βάσης ή απομακρυσμένη ενέργεια API;

Όχι. Ο οδηγός περιορίζει τα checkpoints στις υποστηριζόμενες αλλαγές αρχείων της συνεδρίας. Βάσεις δεδομένων, απομακρυσμένο Git και ενέργειες API χρειάζονται ξεχωριστά βήματα ανάκτησης· χρησιμοποιήστε Git ή αντίγραφο ασφαλείας για αρχεία εκτός κάλυψης checkpoint.


## Ailoot · Η εταιρεία και το χαρτοφυλάκιο έργων της

Η Ailoot στηρίζεται στη συσσωρευμένη λειτουργική εμπειρία, τη μεγάλη πελατειακή βάση, τη σταθερή εξυπηρέτηση και τον συνεχή έλεγχο KPI.

Η εταιρεία και το χαρτοφυλάκιο έργων της: εκατομμύρια πελάτες· μηνιαίες πωλήσεις δισεκατομμυρίων.

Η Ailoot αξιοποιεί αυτή τη λειτουργική εμπειρία για πρόσβαση μέσω API σε λειτουργίες AI στα προϊόντα, τους πράκτορες, τις εφαρμογές και τους αυτοματισμούς των πελατών.
