Git Εντολές - Φύλλο Οδηγιών
Το Git είναι ένα σύστημα ελέγχου εκδόσεων ανοιχτού κώδικα που μπορεί να διαχειριστεί αποτελεσματικά και γρήγορα εκδόσεις έργων από πολύ μικρά έως πολύ μεγάλα. Το Git αναπτύχθηκε από τον Linus Torvalds για να βοηθήσει στη διαχείριση της ανάπτυξης του πυρήνα Linux.
Βασικά Git
git init <directory>Δημιουργεί ένα κενό αποθετήριο git στον καθορισμένο κατάλογο. Εάν εκτελεστεί χωρίς παραμέτρους, προετοιμάζει τον τρέχοντα κατάλογο ως αποθετήριο git.
git clone <repo>Κλωνοποιεί το αποθετήριο που βρίσκεται στο <repo> στον τοπικό μηχάνημα. Το αρχικό αποθετήριο μπορεί να βρίσκεται στο τοπικό σύστημα αρχείων ή σε απομακρυσμένο μηχάνημα μέσω HTTP ή SSH.
git config user.name <name>Καθορίζει το όνομα του συγγραφέα για όλες τις υποβολές (commits) στο τρέχον αποθετήριο.
git add <directory>Προσθέτει τα περιεχόμενα που άλλαξαν στον κατάλογο <directory> για την επόμενη υποβολή.
git commit -m "<message>"Υποβάλλει το στιγμιότυπο της φάσης προετοιμασίας, χρησιμοποιώντας το <message> ως μήνυμα υποβολής.
git statusΠαραθέτει ποια αρχεία βρίσκονται σε κατάσταση προετοιμασίας (staged), μη προετοιμασίας (unstaged) και μη παρακολούθησης (untracked).
git logΕμφανίζει ολόκληρο το ιστορικό υποβολών χρησιμοποιώντας την προεπιλεγμένη μορφή.
git diffΣυγκρίνει τις διαφορές μεταξύ του καταλόγου εργασίας (πριν το git add) και της περιοχής προετοιμασίας (μετά το git add).
Ακύρωση Τροποποιήσεων
git revert <commit>Δημιουργεί μια νέα υποβολή που ακυρώνει όλες τις αλλαγές που έγιναν στο <commit> και στη συνέχεια τις εφαρμόζει στον τρέχοντα κλάδο (branch).
git reset <file>Αφαιρεί το αρχείο <file> από την περιοχή προετοιμασίας, αλλά διατηρεί τον κατάλογο εργασίας αμετάβλητο. Αυτό ακυρώνει την προετοιμασία του αρχείου χωρίς να αντικαταστήσει καμία αλλαγή.
git clean -nΕμφανίζει ποια αρχεία πρόκειται να διαγραφούν από τον κατάλογο εργασίας. Χρησιμοποιήστε τη σημαία -f αντί για -n για να εκτελέσετε τον καθαρισμό.
Επανεγγραφή Ιστορικού Git
git commit --amendΤροποποιεί το τελευταίο συμβάν υποβολής git. Εάν ο κατάλογος εργασίας έχει αλλαγές προς υποβολή, η χρήση της εντολής git commit --amend θα υποβάλει και τις τελευταίες αλλαγές του καταλόγου εργασίας μαζί.
git rebase <base>Επαναφέρει τον τρέχοντα κλάδο στη βάση <base>. Η βάση <base> μπορεί να είναι ένα ID υποβολής, όνομα κλάδου, ετικέτα (tag) ή το HEAD.
git reflogΣας επιτρέπει να δείτε όλα τα αρχεία καταγραφής όλων των λειτουργιών σε όλους τους κλάδους (συμπεριλαμβανομένων των commits που έχουν διαγραφεί και των λειτουργιών reset).
Κλάδοι Git (Branches)
git branchΠαραθέτει όλους τους κλάδους. Προσθέστε μια παράμετρο <branch> για να δημιουργήσετε έναν νέο κλάδο με αυτό το όνομα.
git checkout -b <branch>Δημιουργεί και μεταβαίνει σε έναν νέο κλάδο με το όνομα <branch>. Αφαιρέστε το -b για να μεταβείτε σε έναν υπάρχοντα κλάδο.
git merge <branch>Συγχωνεύει τον κλάδο <branch> στον τρέχοντα κλάδο.
Απομακρυσμένα Αποθετήρια
git remote add <name> <url>Προσθέτει ένα νέο απομακρυσμένο αποθετήριο. Μετά την προσθήκη, μπορείτε να χρησιμοποιήσετε το <name> ως συντόμευση για το <url> σε άλλες εντολές.
git fetch <remote> <branch>Λαμβάνει όλες τις ενημερώσεις για τον καθορισμένο κλάδο από το αποθετήριο, αλλά δεν τις συγχωνεύει με τον τοπικό κλάδο.
git pull <remote>Λαμβάνει το καθορισμένο απομακρυσμένο αντίγραφο του τρέχοντος κλάδου και το συγχωνεύει αμέσως με το τοπικό αντίγραφο.
git push <remote> <branch>Ωθεί τον κλάδο στο <remote>, μαζί με τις απαραίτητες υποβολές και αντικείμενα. Εάν το απομακρυσμένο αποθετήριο δεν υπάρχει, δημιουργεί έναν ομώνυμο κλάδο σε αυτό.
git config
git config --global user.name <name>Καθορίζει το όνομα του συγγραφέα για όλες τις υποβολές του τρέχοντος χρήστη.
git config --global user.email <email>Καθορίζει το email του συγγραφέα για όλες τις υποβολές του τρέχοντος χρήστη.
git config --global alias. <alias-name> <git-command>Δημιουργεί μια συντόμευση (alias) για μια εντολή Git.
git config --system core.editor <editor>Ορίζει τον διορθωτή κειμένου που θα χρησιμοποιείται από τις εντολές για όλους τους χρήστες στον υπολογιστή.
git config --global --editΑνοίγει το καθολικό αρχείο ρυθμίσεων σε έναν διορθωτή κειμένου για χειροκίνητη επεξεργασία.
git log
git log -<limit>Εμφανίζει <limit> εγγραφές από το ιστορικό υποβολών.
git log --onelineΕμφανίζει το ιστορικό υποβολών, συμπιέζοντας κάθε υποβολή σε μία γραμμή.
git log -pΕμφανίζει το ιστορικό υποβολών μαζί με την πλήρη διαφορά (diff) για κάθε υποβολή.
git log --statΕμφανίζει το ιστορικό υποβολών, συμπεριλαμβανομένων των αρχείων που τροποποιήθηκαν και του σχετικού αριθμού γραμμών που προστέθηκαν ή αφαιρέθηκαν από κάθε αρχείο.
git log --author= ”<pattern>”Αναζητά υποβολές από έναν συγκεκριμένο συγγραφέα.
git log --grep=”<pattern>”Αναζητά στο ιστορικό υποβολών χρησιμοποιώντας αντιστοίχιση κανονικών εκφράσεων (regex).
git log <since>..<until>Εμφανίζει τις υποβολές που έγιναν μεταξύ του <since> και του <until>.
git log -- <file>Εμφανίζει μόνο τις υποβολές που περιλαμβάνουν το καθορισμένο αρχείο.
git diff
git diff HEADΣυγκρίνει τις διαφορές αρχείων μεταξύ του καταλόγου εργασίας (πριν το git add) και του αποθετηρίου (μετά το git commit).
git diff --cachedΣυγκρίνει τις διαφορές αρχείων μεταξύ της περιοχής προετοιμασίας (μετά το git add) και του αποθετηρίου (μετά το git commit).
git reset
git resetΕπαναφέρει την περιοχή προετοιμασίας για να ταιριάζει με την τελευταία υποβολή, αλλά διατηρεί τον κατάλογο εργασίας αμετάβλητο.
git reset --hardΕπαναφέρει την περιοχή προετοιμασίας και τον κατάλογο εργασίας στην τελευταία υποβολή, αντικαθιστώντας όλες τις αλλαγές στον κατάλογο εργασίας.
git reset <commit>Μετακινεί τον δείκτη του τρέχοντος κλάδου πίσω στο <commit> και επαναφέρει την περιοχή προετοιμασίας, χωρίς όμως να αλλάζει τον κατάλογο εργασίας.
git reset --hard <commit>Το ίδιο με το προηγούμενο, αλλά επαναφέρει τόσο την περιοχή προετοιμασίας όσο και τον κατάλογο εργασίας. Διαγράφει τις μη υποβληθείσες αλλαγές και όλες τις υποβολές μετά το <commit>.
git pull
git pull --rebase <remote>Λαμβάνει το απομακρυσμένο αντίγραφο του τρέχοντος κλάδου και το επαναφέρει (rebase) πάνω στο τοπικό αντίγραφο. Χρησιμοποιεί το git rebase αντί για merge για την ενσωμάτωση του κλάδου.
git push
git push <remote> --forceΑναγκαστική ώθηση (force push).
git push <remote> --allΩθεί όλους τους τοπικούς κλάδους στο καθορισμένο απομακρυσμένο αποθετήριο.
git push <remote> --tagsΩθεί όλες τις τοπικές ετικέτες (tags) στο απομακρυσμένο αποθετήριο.