Git Reset - Άσκηση Πρακτική

1 λεπτά

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

  1. Ρύθμιση της άσκησης
  2. Άσκηση 1: Reset soft
  3. Άσκηση 2: Reset mixed
  4. Άσκηση 3: Reset hard
  5. Επαλήθευση

1. Ρύθμιση της άσκησης

bash
mkdir exercice-reset && cd exercice-reset
git init

# Δημιουργία πολλών commits για δοκιμή
echo "print('v1')" > app.py && git add . && git commit -m "Version 1"
echo "print('v2')" > app.py && git add . && git commit -m "Version 2"
echo "print('v3')" > app.py && git add . && git commit -m "Version 3"
echo "print('v4')" > app.py && git add . && git commit -m "Version 4"

git log --oneline    # Σημειώστε τα hash

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

2. Άσκηση 1: Reset soft

Στόχος: Επιστροφή 2 commits πίσω, διατήρηση των αλλαγών σταδιοποιημένων.

bash
git reset --soft HEAD~2

# Επαληθεύσεις
git status           # Αλλαγές στην περιοχή staging;
cat app.py          # Ποιο περιεχόμενο;
git log --oneline   # Πόσα commits;

Αναμενόμενο αποτέλεσμα:

  • Αρχείο: περιέχει v4
  • Κατάσταση: τροποποιήσεις σταδιοποιημένες για commit
  • Log: 2 commits (v1, v2)

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

3. Άσκηση 2: Reset mixed

Επαναφορά στο μηδέν και έπειτα δοκιμή mixed:

bash
git commit -m "Re-commit v4"    # Επαναφορά του v4
git reset --mixed HEAD~1        # Επιστροφή 1 commit (προεπιλεγμένη λειτουργία)

# Επαληθεύσεις
git status           # Μη σταδιοποιημένες αλλαγές;
cat app.py          # Ποιο περιεχόμενο;
git log --oneline   # Πόσα commits;

Αναμενόμενο αποτέλεσμα:

  • Αρχείο: περιέχει v4
  • Κατάσταση: μη σταδιοποιημένες τροποποιήσεις
  • Log: 3 commits (v1, v2, v3)

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

4. Άσκηση 3: Reset hard

ΠΡΟΣΟΧΗ: Reset hard = καταστροφικό!

bash
git add .                    # Σταδιοποίηση των αλλαγών
git commit -m "Re-commit v4" # Επαναφορά του v4
git reset --hard HEAD~2      # Διαγραφή ΟΛΩΝ, επιστροφή 2 commits

# Επαληθεύσεις
git status           # Καθαρό working directory;
cat app.py          # Ποιο περιεχόμενο;
git log --oneline   # Πόσα commits;

Αναμενόμενο αποτέλεσμα:

  • Αρχείο: περιέχει v2
  • Κατάσταση: nothing to commit
  • Log: 2 commits (v1, v2)

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

5. Επαλήθευση

Ανακεφαλαίωση των 3 λειτουργιών:

ΛειτουργίαCommitsStagingWorking Directory
--softΠίσωΚρατάΚρατά
--mixedΠίσωΔιαγράφειΚρατά
--hardΠίσωΔιαγράφειΔιαγράφει

Καταλάβατε τις 3 λειτουργίες; Τέλεια! Το reset δεν έχει πια μυστικά.

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