Οδηγός Git
Ένας οδηγός αναφοράς Git με δυνατότητα αναζήτησης και εκτύπωσης — ρυθμίσεις, κλάδοι, συγχώνευση, rebase, απομακρυσμένα αποθετήρια, stash, ετικέτες και αναίρεση αλλαγών. Δωρεάν.
Ρύθμιση & διαμόρφωση
10git config --global user.name "Jane Doe"
Ορισμός ονόματος που συνδέεται με τα commits
git config --global user.email "jane@example.com"
Ορισμός email που συνδέεται με τα commits
git config --global init.defaultBranch main
Νέα repos ξεκινούν στον κλάδο "main"
git config --global core.editor "code --wait"
Χρήση του VS Code ως προεπιλεγμένου επεξεργαστή Git
git config --global pull.rebase true
Rebase αντί για merge κατά το pull
git config --global alias.co checkout
Δημιουργία συντόμευσης alias (git co)
git config --global --list
Λίστα όλων των global τιμών διαμόρφωσης
git config user.email
Εμφάνιση email για το τρέχον repo
git config --global color.ui auto
Ενεργοποίηση χρωματιστής εξόδου γραμμής εντολών
git help <command>
Άνοιγμα σελίδας εγχειριδίου για μια εντολή
Δημιουργία & κλωνοποίηση repos
9git init
Αρχικοποίηση νέου repo στον τρέχοντα φάκελο
git init my-project
Δημιουργία νέου repo σε νέο κατάλογο
git clone https://example.com/repo.git
Κλωνοποίηση απομακρυσμένου repo μέσω HTTPS
git clone git@example.com:user/repo.git
Κλωνοποίηση απομακρυσμένου repo μέσω SSH
git clone <url> my-dir
Κλωνοποίηση σε συγκεκριμένο όνομα καταλόγου
git clone --depth 1 <url>
Shallow clone μόνο με το τελευταίο commit
git clone --branch dev <url>
Κλωνοποίηση και checkout συγκεκριμένου κλάδου
git clone --recurse-submodules <url>
Κλωνοποίηση και αρχικοποίηση όλων των submodules
git remote add origin <url>
Σύνδεση remote σε υπάρχον τοπικό repo
Staging & commit
11git add file.txt
Stage ενός αρχείου για το επόμενο commit
git add .
Stage όλων των αλλαγών στον τρέχοντα κατάλογο
git add -A
Stage όλων των αλλαγών, και των διαγραφών
git add -p
Διαδραστικό stage επιλεγμένων hunks
git commit -m "Add login form"
Commit των staged αλλαγών με μήνυμα
git commit -am "Fix typo"
Stage tracked αρχείων και commit σε ένα βήμα
git commit --amend
Επεξεργασία του πιο πρόσφατου commit
git commit --amend --no-edit
Προσθήκη staged αλλαγών στο τελευταίο commit
git rm file.txt
Αφαίρεση αρχείου και stage της διαγραφής
git mv old.txt new.txt
Μετονομασία ή μετακίνηση αρχείου και stage
git reset file.txt
Unstage αρχείου διατηρώντας τις αλλαγές του
Κλάδοι
10git branch
Λίστα όλων των τοπικών κλάδων
git branch -a
Λίστα τοπικών και remote-tracking κλάδων
git switch -c feature/login
Δημιουργία νέου κλάδου και μετάβαση σε αυτόν
git switch main
Μετάβαση σε υπάρχοντα κλάδο
git checkout -b hotfix
Κλασικός τρόπος δημιουργίας και αλλαγής κλάδων
git branch -m old-name new-name
Μετονομασία κλάδου
git branch -d feature/login
Διαγραφή merged τοπικού κλάδου
git branch -D feature/login
Force διαγραφή μη-merged τοπικού κλάδου
git push origin --delete feature/login
Διαγραφή κλάδου στο remote
git switch -
Επιστροφή στον προηγούμενο κλάδο
Merging & rebasing
10git merge feature/login
Merge κλάδου στον τρέχοντα
git merge --no-ff feature/login
Merge με πάντα δημιουργία merge commit
git merge --squash feature/login
Συνδυασμός κλάδου σε μία staged αλλαγή
git merge --abort
Ακύρωση merge με conflicts
git rebase main
Replay commits τρέχοντος κλάδου πάνω στο main
git rebase -i HEAD~3
Διαδραστική επεξεργασία των 3 τελευταίων commits
git rebase --continue
Συνέχιση rebase μετά την επίλυση conflicts
git rebase --abort
Ακύρωση rebase σε εξέλιξη
git cherry-pick <hash>
Εφαρμογή ενός commit στον τρέχοντα κλάδο
git mergetool
Εκκίνηση εργαλείου επίλυσης merge conflicts
Remotes & συγχρονισμός
11git remote -v
Λίστα ρυθμισμένων remotes και των URLs τους
git remote add upstream <url>
Προσθήκη δεύτερου remote με όνομα upstream
git remote set-url origin <url>
Αλλαγή URL υπάρχοντος remote
git fetch
Λήψη απομακρυσμένων αλλαγών χωρίς merge
git fetch --all --prune
Fetch όλων των remotes και αφαίρεση παλιών κλάδων
git pull
Fetch και ενσωμάτωση απομακρυσμένων αλλαγών
git pull --rebase
Pull και rebase τοπικών commits από πάνω
git push
Ανέβασμα τοπικών commits στο remote
git push -u origin main
Push και ορισμός upstream tracking κλάδου
git push --force-with-lease
Ασφαλές force-push χωρίς να σβήνει αλλαγές άλλων
git push origin --tags
Push όλων των τοπικών tags στο remote
Επιθεώρηση & σύγκριση
10git status
Εμφάνιση staged, unstaged και untracked αρχείων
git status -s
Εμφάνιση κατάστασης σε σύντομη μορφή
git diff
Εμφάνιση unstaged αλλαγών έναντι του index
git diff --staged
Εμφάνιση αλλαγών staged για το επόμενο commit
git diff main..feature
Σύγκριση δύο κλάδων
git diff HEAD~1 HEAD
Σύγκριση τελευταίου commit με το parent του
git show <hash>
Εμφάνιση λεπτομερειών και diff ενός commit
git show HEAD:file.txt
Εμφάνιση αρχείου όπως ήταν σε ένα commit
git log --stat
Εμφάνιση commits με σύνοψη αλλαγμένων αρχείων
git shortlog -sn
Καταμέτρηση commits ανά συγγραφέα
Αναίρεση αλλαγών
10git restore file.txt
Απόρριψη unstaged αλλαγών σε αρχείο
git restore --staged file.txt
Unstage αρχείου διατηρώντας τις αλλαγές του
git restore --source=HEAD~1 file.txt
Επαναφορά αρχείου από προηγούμενο commit
git checkout -- file.txt
Κλασικός τρόπος απόρριψης τοπικών αλλαγών
git reset --soft HEAD~1
Αναίρεση τελευταίου commit, αλλαγές staged
git reset --mixed HEAD~1
Αναίρεση τελευταίου commit, αλλαγές unstaged
git reset --hard HEAD~1
Αναίρεση τελευταίου commit και απόρριψη αλλαγών
git revert <hash>
Νέο commit που αναιρεί ένα commit
git clean -fd
Διαγραφή untracked αρχείων και καταλόγων
git clean -nd
Προεπισκόπηση τι θα αφαιρούσε το clean
Stashing
10git stash
Αποθήκευση uncommitted αλλαγών και καθαρισμός tree
git stash push -m "wip"
Stash αλλαγών με περιγραφικό μήνυμα
git stash -u
Stash μαζί με untracked αρχεία
git stash list
Λίστα όλων των stashed σετ αλλαγών
git stash show -p
Εμφάνιση diff του τελευταίου stash
git stash apply
Επανεφαρμογή τελευταίου stash με διατήρηση
git stash pop
Επανεφαρμογή τελευταίου stash και αφαίρεσή του
git stash apply stash@{2}
Επανεφαρμογή συγκεκριμένου stash με index
git stash drop stash@{0}
Διαγραφή ενός stash
git stash clear
Διαγραφή όλων των stash
Tags
9git tag
Λίστα όλων των tags
git tag v1.0.0
Δημιουργία lightweight tag στο HEAD
git tag -a v1.0.0 -m "Release 1.0.0"
Δημιουργία annotated tag με μήνυμα
git tag -a v1.0.0 <hash>
Tag σε συγκεκριμένο παλιό commit
git show v1.0.0
Εμφάνιση λεπτομερειών για ένα tag
git push origin v1.0.0
Push ενός tag στο remote
git push origin --tags
Push όλων των τοπικών tags στο remote
git tag -d v1.0.0
Διαγραφή tag τοπικά
git push origin --delete v1.0.0
Διαγραφή tag στο remote
Logs & ιστορικό
12git log
Εμφάνιση πλήρους ιστορικού commit
git log --oneline
Εμφάνιση συμπαγούς log μία γραμμή ανά commit
git log --oneline --graph --all
Απεικόνιση κλάδων ως γράφημα ASCII
git log -p
Εμφάνιση ιστορικού commit με diffs
git log --author="Jane"
Φιλτράρισμα ιστορικού ανά συγγραφέα
git log --since="2 weeks ago"
Φιλτράρισμα ιστορικού ανά εύρος ημερομηνιών
git log --pretty=format:"%h %an %s"
Προσαρμογή μορφής εξόδου log
git blame file.txt
Εμφάνιση ποιος άλλαξε τελευταίος κάθε γραμμή
git reflog
Εμφάνιση ιστορικού θέσεων του HEAD
git bisect start
Έναρξη binary search για κακό commit
git bisect good <hash>
Σήμανση commit ως good κατά το bisect
git bisect bad
Σήμανση τρέχοντος commit ως bad
Καμία καταχώριση δεν ταιριάζει με «:q».
Χρειάζεστε βοήθεια;
Βρήκατε πρόβλημα με αυτό το εργαλείο; Ενημερώστε μας.