Git & GitHub CLI Power Guide: Interactive Rebase, Cherry-Pick & Stashing
Κατακτήστε τις προηγμένες τεχνικές του Git: interactive rebase, cherry-pick, διαχείριση stashes, επίλυση συγκρούσεων και ανάκτηση χαμένων commits με το reflog.
Χωρίς πρόσφατο έλεγχο περιεχομένου. Οι εντολές και τα παραδείγματα ενδέχεται να έχουν αλλάξει από τη δημοσίευση.
Κατακτήστε τις προηγμένες τεχνικές του Git: interactive rebase, cherry-pick, διαχείριση stashes, επίλυση συγκρούσεων και ανάκτηση χαμένων commits με το reflog.
Git & GitHub CLI Power Guide: Interactive Rebase, Cherry-Pick & Stashing
Κάθε προγραμματιστής γνωρίζει τις εντολές git add, git commit και git push. Ωστόσο, σε ένα πραγματικό επαγγελματικό περιβάλλον παραγωγής με pull requests και code reviews, η διατήρηση ενός πεντακάθαρου, σειριακού ιστορικού είναι ένδειξη υψηλού επαγγελματισμού.
Σε αυτόν τον οδηγό θα αναλύσουμε τις 4 πιο ισχυρές εντολές του Git και πώς να σώσετε την κατάσταση όταν νομίζετε ότι "καταστρέψατε" το repository σας.
1. Καθαρισμός Ιστορικού με Interactive Rebase (git rebase -i)
Πριν ανοίξετε ένα Pull Request, συχνά έχετε 5-10 πρόχειρα commits όπως "fix typo", "WIP", "try again". Το Interactive Rebase σας επιτρέπει να συγχωνεύσετε (squash) αυτά τα commits σε ένα ενιαίο, περιγραφικό commit.
bash# Rebase για τα τελευταία 4 commits git rebase -i HEAD~4
Στον editor που ανοίγει, εμφανίζονται οι επιλογές:
textpick 1a2b3c4 feat: add user authentication form squash 5d6e7f8 fix typo in button label squash 9a0b1c2 fix styling pick 3d4e5f6 test: add unit tests for login action
pick: Διατηρεί το commit.squash(ήs): Συγχωνεύει το commit στο αμέσως προηγούμενο, επιτρέποντάς σας να συντάξετε ένα ενιαίο commit message.reword(ήr): Αλλάζει μόνο το μήνυμα του commit χωρίς αλλαγή στον κώδικα.drop(ήd): Διαγράφει πλήρως το commit!
2. Επιλεκτική Μεταφορά Αλλαγών με το git cherry-pick
Χρειάζεστε επειγόντως ένα hotfix που γράφτηκε σε ένα πειραματικό branch, χωρίς να κάνετε merge ολόκληρο το branch;
bash# 1. Βρείτε το commit hash από το άλλο branch git log --oneline feature-experimental -n 5 # 2. Εφαρμογή μόνο αυτού του συγκεκριμένου commit στο τρέχον branch git cherry-pick 7f8a9b0
3. Διαχείριση Stashes: Αλλαγή Context Χωρίς Commit
Όταν δουλεύετε σε ένα feature και πρέπει επειγόντως να διορθώσετε ένα bug στο master, δεν χρειάζεται να κάνετε πρόχειρο commit:
bash# Αποθήκευση αλλαγών με περιγραφικό όνομα git stash push -m "WIP: Stripe webhook refactoring" # Εναλλαγή στο master και hotfix git checkout master # ... fix bug ... # Επιστροφή στο feature branch και ανάκτηση του stash git checkout feature-branch git stash pop
4. Το Απόλυτο Δίχτυ Ασφαλείας: git reflog
Κάνατε κατά λάθος git reset --hard και νομίζετε ότι χάσατε τον κώδικα 3 ημερών; Στο Git τίποτα δεν χάνεται άμεσα.
Το reflog καταγράφει κάθε κίνηση του δείκτη HEAD:
bashgit reflog
Έξοδος:
texte9f80cc HEAD@{0}: reset: moving to HEAD~2 a1b2c3d HEAD@{1}: commit: feat: implement stripe payment
Για να επαναφέρετε το repository στην κατάσταση που βρισκόταν πριν το λάθος:
bashgit reset --hard HEAD@{1}
Και το commit σας επανήλθε στη ζωή!
5. Επιτάχυνση Ροής με το GitHub CLI (gh)
Το επίσημο GitHub CLI (gh) καταργεί την ανάγκη μετάβασης στον browser για καθημερινές λειτουργίες Pull Requests, Issues και CI/CD παρακολούθησης:
bash# 1. Δημιουργία Pull Request απευθείας από το τερματικό gh pr create --title "feat: multi-tenant RLS policies" --body "Προσθήκη RLS με (select auth.uid())." # 2. Checkout σε PR συνεργάτη για τοπικό review και δοκιμή gh pr checkout 42 # 3. Live παρακολούθηση των GitHub Actions CI/CD workflows gh run watch # 4. Προβολή ανοιχτών issues με ετικέτα ασφαλείας gh issue list --label "security" --limit 5