Git worktree = Να έχετε πολλούς φακέλους εργασίας για το ΙΔΙΟ αποθετήριο.
Έννοια:
Αναλογία: Είναι σαν να έχετε πολλά γραφεία για το ίδιο έργο.
Κλασικό πρόβλημα:
# Εργάζεστε στο feature-A
git checkout feature-A
# Κώδικας, κώδικας, κώδικας... (ημιτελής εργασία)
# ΕΠΕΙΓΟΝ: σφάλμα στο main!
git stash # Αποθήκευση εργασίας σε εξέλιξη
git checkout main # Μετάβαση στο main
# Διόρθωση του σφάλματος...
git checkout feature-A # Επιστροφή στην εργασία σας
git stash pop # Ανάκτηση της εργασίας σε εξέλιξηΛύση worktree:
# Εργάζεστε στο feature-A στον κύριο φάκελο
# Επείγον; Δημιουργήστε νέο φάκελο για το main!
git worktree add ../hotfix main
# Τώρα:
# - ./ → feature-A (η εργασία σας συνεχίζεται)
# - ../hotfix → main (για την επείγουσα διόρθωση)Πλεονέκτημα: Χωρίς stash/αλλαγή κλάδου. Απλώς 2 φάκελοι, 2 παράλληλες εργασίες!
mkdir demo-worktree && cd demo-worktree
git init
echo "print('main v1')" > app.py
git add . && git commit -m "Main version"
# Δημιουργία κλάδου feature
git checkout -b feature-new
echo "print('feature work')" > feature.py
git add . && git commit -m "Feature work"
git checkout main# Δημιουργία worktree για το feature-new
git worktree add ../feature-work feature-new
# Δημιουργία worktree για νέο κλάδο
git worktree add ../hotfix-branch -b hotfix
# Προβολή όλων των worktrees
git worktree listdemo-worktree/ → κλάδος main
../feature-work/ → κλάδος feature-new
../hotfix-branch/ → κλάδος hotfix (νέος)# Τερματικό 1: κύριος φάκελος (main)
cd demo-worktree
echo "print('main updated')" >> app.py
git add . && git commit -m "Update main"
# Τερματικό 2: εργασία feature
cd ../feature-work
echo "print('feature complete')" >> feature.py
git add . && git commit -m "Complete feature"
# Τερματικό 3: hotfix
cd ../hotfix-branch
echo "print('urgent fix')" > fix.py
git add . && git commit -m "Critical fix"Μαγεία: 3 κλάδοι, 3 φάκελοι, 0 αλλαγή πλαισίου!
| Εντολή | Ενέργεια |
|---|---|
git worktree add <path> <branch> | Δημιουργία worktree σε υπάρχοντα κλάδο |
git worktree add <path> -b <new-branch> | Δημιουργία worktree + νέου κλάδου |
git worktree list | Προβολή όλων των worktrees |
git worktree remove <path> | Διαγραφή worktree |
git worktree prune | Καθαρισμός διαγραμμένων worktrees |
1. Επείγον hotfix:
git worktree add ../hotfix main
cd ../hotfix && echo "fix" > fix.py
git add . && git commit -m "Hotfix"
git push origin main2. Αναθεώρηση PR:
git worktree add ../pr-review pr-branch
cd ../pr-review # Δοκιμή του PR χωρίς να διαταράξετε την εργασία σας3. Σύγκριση κλάδων:
git worktree add ../version-a branch-a
git worktree add ../version-b branch-b
# Σύγκριση αρχείων μεταξύ ../version-a και ../version-bgit worktree remove ../feature-work
git worktree remove ../hotfix-branch
git worktree prune # Καθαρισμός των αναφορώνWorktree = πολυδιεργασία Git χωρίς συμβιβασμούς!