#!/bin/bash
# 04_undo_changes.sh - ביטול שינויים בכל הרמות

# יצירת קובץ והוספת commit ראשון
echo "version 1" > file.txt
git add file.txt
git commit -m "Add file v1"

# שינוי הקובץ
echo "version 2" > file.txt

# ביטול השינוי בקובץ - חוזר ל-version 1
git restore file.txt

# שינוי שני ל-staging
echo "version 2" > file.txt
git add file.txt

# הסרה מ-staging - השינוי נשאר בקובץ
git restore --staged file.txt

# מבצעים commit
git add file.txt
git commit -m "Update file to v2"

# ביטול ה-commit האחרון - השינויים נשארים ב-staging
git reset --soft HEAD~1

# ביטול ה-commit האחרון + ניקוי staging
git reset --mixed HEAD~1

# מסוכן! ביטול ה-commit + מחיקת השינויים
# git reset --hard HEAD~1

# הדרך הבטוחה לבטל commit שנדחף לשרת
git revert HEAD

# שחזור commit "אבוד" דרך reflog
git reflog
# git reset --hard <sha-from-reflog>
