Skip to content

Εντολές Git εξηγημένες

Οι εντολές Git που χρησιμοποιείς πραγματικά, ομαδοποιημένες ανά εργασία: δημιουργία αποθετηρίου, αποθήκευση στιγμιότυπων, δημιουργία κλάδων και συγχώνευση, ανάγνωση ιστορικού, συνεργασία με remote, αναίρεση λαθών, απόθεση εργασίας και διαχείριση αρχείων και υποενοτήτων. Κάθε γραμμή συνδυάζει την εντολή με μια ρεαλιστική κλήση.

Το Git έχει εκατοντάδες εντολές, αλλά η καθημερινή δουλειά χρειάζεται μόνο λίγες. Το νοητικό μοντέλο είναι: το working tree είναι τα αρχεία σου, ο δείκτης (staging area) είναι το επόμενο commit, και το HEAD είναι το τρέχον commit. Κάνεις stage, κάνεις commit, μοιράζεσαι. Διάβαζε συχνά το status. Όλα τα παρακάτω υποθέτουν ότι μια εντολή υπάρχει ήδη, αν παρατίθεται.

Πίνακας αναφοράς · 55 καταχωρήσεις
55 of 55 rows
Ρύθμιση και διαμόρφωση
Ορίζει το όνομα, το email ή τον editor σου μία φορά για όλα τα αποθετήρια.git config --global user.name "Ada"
Ορίζει ένα σύντομο όνομα για μια εντολή που πληκτρολογείς συχνά.git config --global alias.co checkout
Δημιουργεί ένα νέο αποθετήριο στον τρέχοντα φάκελο.git init
Αντιγράφει ένα απομακρυσμένο αποθετήριο στον υπολογιστή σου.git clone git@github.com:org/repo.git
Αντιγράφει μόνο τα νεότερα commits ενός μόνο κλάδου.git clone --depth 1 --single-branch git@github.com:org/repo.git
Βασικά στιγμιότυπων
Δείχνει τι είναι staged, τροποποιημένο και untracked.git status -sb
Κάνει stage τις αλλαγές ώστε να μπουν στο επόμενο commit.git add src/app.ts
Ελέγχει τις αλλαγές τμήμα-τμήμα και κάνει stage μόνο όσες αποδέχεσαι.git add -p src/app.ts
Κάνει stage τις αλλαγές όλων των tracked αρχείων χωρίς να προσθέτει νέα.git add -u
Καταγράφει τις staged αλλαγές ως νέο commit.git commit -m "fix: null check"
Αντικαθιστά το τελευταίο commit με ένα διορθωμένο.git commit --amend -m "fix: handle empty input"
Δείχνει τις unstaged αλλαγές, ή τις staged με --staged.git diff --staged
Δείχνει κάθε αλλαγή από το τελευταίο commit, staged ή όχι.git diff HEAD
Κλάδοι και συγχώνευση
Εμφανίζει, δημιουργεί ή διαγράφει κλάδους.git branch feature-x
Διαγράφει έναν συγχωνευμένο κλάδο (το -D τον εξαναγκάζει, το -a εμφανίζει όλους τους κλάδους).git branch -d feature-x
Εναλλάσσει κλάδους (ο σύγχρονος αντικαταστάτης του checkout).git switch feature-x
Δημιουργεί νέο κλάδο και μεταβαίνει σε αυτόν σε ένα βήμα.git switch -c feature-x
Εναλλάσσει κλάδους ή επαναφέρει αρχεία (η παλαιότερη, ευρύτερη εντολή).git checkout feature-x
Φέρνει τις αλλαγές άλλου κλάδου στον τρέχοντα.git merge feature-x
Ακυρώνει μια συγχώνευση με διενέξεις και επαναφέρει τον κλάδο στην προηγούμενη κατάστασή του.git merge --abort
Επαναλαμβάνει τα commits του τρέχοντος κλάδου πάνω σε άλλον κλάδο.git rebase main
Συγχωνεύει, αναδιατάσσει ή επεξεργάζεται commits κατά την επανάληψη.git rebase -i main
Αντιγράφει ένα μόνο commit από άλλον κλάδο σε αυτόν.git cherry-pick a1b2c3d
Επισημαίνει ένα commit με ένα αναγνώσιμο όνομα, όπως μια έκδοση.git tag -a v1.2.0
Εξάγει άλλον κλάδο σε ξεχωριστό φάκελο ταυτόχρονα.git worktree add ../repo-feature feature-x
Εξερεύνηση ιστορικού
Περνάει από το ιστορικό των commits.git log --oneline --graph --decorate
Περνάει από το ιστορικό όλων των κλάδων, όχι μόνο του τρέχοντος.git log --oneline --graph --all
Δείχνει το πλήρες diff και το μήνυμα ενός commit.git show HEAD
Δείχνει ποιος άλλαξε τελευταίος κάθε γραμμή ενός αρχείου.git blame src/app.ts
Δείχνει κάθε commit στο οποίο έχει δείξει το HEAD, συμπεριλαμβανομένων των απορριφθέντων.git reflog
Αναζητά στο ιστορικό ανά δύο για να βρει το commit που προκάλεσε βλάβη.git bisect start
Συνοψίζει τα commits ανά συγγραφέα.git shortlog -sn
Ονομάζει το τρέχον commit μετρώντας από το πλησιέστερο tag.git describe --tags
Συνεργασία με remote
Εμφανίζει ή προσθέτει απομακρυσμένα αποθετήρια.git remote add origin <url>
Εμφανίζει τα remote με τα fetch και push URL τους.git remote -v
Κατεβάζει τις απομακρυσμένες αλλαγές χωρίς να αλλάζει τους κλάδους σου.git fetch origin
Κατεβάζει τις απομακρυσμένες αλλαγές και απορρίπτει refs σε διαγραμμένους απομακρυσμένους κλάδους.git fetch --prune
Κατεβάζει και συγχωνεύει τις απομακρυσμένες αλλαγές του τρέχοντος κλάδου.git pull --rebase
Στέλνει τα τοπικά commits στο remote.git push -u origin feature-x
Αντικαθιστά τον απομακρυσμένο κλάδο, αλλά μόνο αν κανείς δεν έκανε push πρώτος.git push --force-with-lease origin feature-x
Αναίρεση αλλαγών
Απορρίπτει τις αλλαγές του working tree, ή τις αφαιρεί από το stage.git restore src/app.ts
Αφαιρεί ένα αρχείο από το stage και κρατά τις αλλαγές του στο working tree.git restore --staged src/app.ts
Μετακινεί την άκρη του τρέχοντος κλάδου και προαιρετικά τον δείκτη.git reset --hard HEAD~1
Προσθέτει νέο commit που αναιρεί ένα προηγούμενο (ασφαλές για κοινή χρήση).git revert HEAD
Διαγράφει untracked αρχεία και φακέλους.git clean -fd
Stash
Αποθηκεύει τη μη καταγεγραμμένη εργασία και επαναφέρει το working tree.git stash -u
Δείχνει όλα τα stash που έχεις αποθηκεύσει.git stash list
Εφαρμόζει ξανά ένα stash και το κρατά αποθηκευμένο.git stash apply stash@{1}
Διαγράφει ένα stash που δεν χρειάζεσαι πια.git stash drop stash@{1}
Εφαρμόζει ξανά το πιο πρόσφατο stash και το διαγράφει.git stash pop
Αρχεία και υποενότητες
Μετακινεί ή μετονομάζει ένα αρχείο και κάνει stage την αλλαγή.git mv old.ts src/new.ts
Διαγράφει ένα αρχείο και κάνει stage τη διαγραφή.git rm src/old.ts
Παρακολουθεί ένα άλλο αποθετήριο ως φάκελο μέσα σε αυτό.git submodule add git@github.com:org/lib.git lib
Εξάγει μόνο τους φακέλους που ονομάζεις από ένα μεγάλο αποθετήριο.git sparse-checkout set src docs
Εξάγει το δέντρο ενός commit ως αρχείο tar ή zip.git archive -o repo.zip HEAD