-
1. Ξεκινώντας με το Git
-
2. Τα θεμελιώδη στοιχεία του Git
-
3. Διακλαδώσεις στο Git
-
4. Το Git στον διακομιστή
- 4.1 Τα πρωτόκολλα
- 4.2 Εγκατάσταση του Git σε διακομιστή
- 4.3 Δημιουργία δημόσιου κλειδιού SSH
- 4.4 Στήσιμο του διακομιστή
- 4.5 Δαίμονες του Git
- 4.6 Έξυπνο HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Επιλογές φιλοξενίας από τρίτους
- 4.10 Ανακεφαλαίωση
-
5. Κατανεμημένο Git
-
6. GitHub
-
7. Εργαλεία του Git
- 7.1 Επιλογή αναθεώρησης
- 7.2 Διαδραστική εργασία με το στάδιο καταχώρισης
- 7.3 Αποθέματα και Καθαρισμός
- 7.4 Υπογραφή της δουλειάς μας
- 7.5 Αναζήτηση
- 7.6 Η ιστορία ξαναγράφεται
- 7.7 Απομυθοποίηση της reset
- 7.8 Προχωρημένη Συγχώνευση
- 7.9 Rerere
- 7.10 Αποσφαλμάτωση με το Git
- 7.11 Υπομονάδες
- 7.12 Δεμάτιασμα δεδομένων
- 7.13 Replace
- 7.14 Αποθήκευση διαπιστευτηρίων
- 7.15 Ανακεφαλαίωση
-
8. Εξατομίκευση του Git
-
9. Το Git και άλλα συστήματα
- 9.1 Το Git ως πελάτης
- 9.2 Μετανάστευση στο Git
- 9.3 Ανακεφαλαίωση
-
10. Εσωτερική λειτουργία του Git
- 10.1 Διοχετεύσεις και πορσελάνες
- 10.2 Αντικείμενα του Git
- 10.3 Αναφορές του Git
- 10.4 Πακετάρισμα αρχείων
- 10.5 Τα refspec
- 10.6 Πρωτόκολλα μεταφοράς
- 10.7 Διατήρηση και ανάκτηση δεδομένων
- 10.8 Μεταβλητές περιβάλλοντος
- 10.9 Ανακεφαλαίωση
-
A1. Appendix A: Το Git σε άλλα περιβάλλοντα
- A1.1 Γραφικές διεπαφές
- A1.2 Το Git στο Visual Studio
- A1.3 Git στο Visual Studio Code
- A1.4 Git στο IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git στο Sublime Text
- A1.6 Το Git στο Bash
- A1.7 Το Git στο Zsh
- A1.8 Το Git στο Powershell
- A1.9 Ανακεφαλαίωση
-
A2. Appendix B: Ενσωμάτωση του Git στις εφαρμογές μας
- A2.1 Γραμμή εντολών Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Appendix C: Εντολές Git
- A3.1 Ρύθμιση και διαμόρφωση
- A3.2 Λήψη και δημιουργία έργων
- A3.3 Βασική λήψη στιγμιοτύπων
- A3.4 Διακλάδωση και συγχώνευση
- A3.5 Κοινή χρήση και ενημέρωση έργων
- A3.6 Επιθεώρηση και σύγκριση
- A3.7 Αποσφαλμάτωση
- A3.8 Επιθέματα
- A3.9 Ηλεκτρονικό ταχυδρομείο
- A3.10 Εξωτερικά Συστήματα
- A3.11 Διοίκηση
- A3.12 Εντολές διοχέτευσης
A3.5 Appendix C: Εντολές Git - Κοινή χρήση και ενημέρωση έργων
Κοινή χρήση και ενημέρωση έργων
Δεν υπάρχουν πολλές εντολές στο Git που έχουν πρόσβαση στο δίκτυο, σχεδόν όλες οι εντολές λειτουργούν στην τοπική βάση δεδομένων. Όταν είμαστε έτοιμοι να μοιραστούμε τη δουλειά μας ή να έλξουμε αλλαγές από αλλού, υπάρχει μια χούφτα εντολών που ασχολούνται με τα απομακρυσμένα αποθετήρια.
git fetch
Η εντολή git fetch επικοινωνεί με ένα απομακρυσμένο αποθετήριο και ανακτά όλες τις πληροφορίες που βρίσκονται σε εκείνο το αποθετήριο που δεν βρίσκονται στο τρέχον αποθετήριο και τις αποθηκεύει στην τοπική βάση δεδομένων μας.
Αρχικά εξετάζουμε αυτήν την εντολή στην ενότητα Ανάκτηση δεδομένων από απομακρυσμένα αποθετήρια και συνεχίζουμε να δούμε παραδείγματα χρήσης της στην ενότητα Απομακρυσμένοι κλάδοι.
Τη χρησιμοποιούμε επίσης σε πολλά παραδείγματα στην ενότητα Συνεισφέροντας σε ένα έργο.
Τη χρησιμοποιούμε για να ανακτήσουμε μια συγκεκριμένη αναφορά που βρίσκεται έξω από τον προεπιλεγμένο χώρο στην ενότητα Refs αιτημάτων έλξης και βλέπουμε πώς να ανακτήσουμε από ένα δεμάτι στην ενότητα Δεμάτιασμα δεδομένων.
Δημιουργήσαμε πολύ εξατομικευμένες αναφορές για να κάνουμε την git fetch να έχει λίγο διαφορετική λειτουργία από την προεπιλεγμένη στην ενότητα Τα refspec.
git pull
Η εντολή git pull είναι βασικά ένας συνδυασμός των εντολών git fetch και git merge, στον οποίο το Git θα ανακτήσει από το απομακρυσμένο σημείο που καθορίζουμε και στη συνέχεια θα προσπαθήσει αμέσως να το συγχωνεύσει στον κλάδο στον οποίο βρισκόμαστε.
Την εισάγουμε γρήγορα στην ενότητα Ανάκτηση δεδομένων από απομακρυσμένα αποθετήρια και δείχνουμε πώς θα δούμε τι θα συγχωνευθεί αν την τρέξουμε στην ενότητα Επιθεώρηση απομακρυσμένου αποθετηρίου.
Βλέπουμε επίσης πώς να τη χρησιμοποιήσουμε για να βοηθήσουμε στην επανατοποθέτηση σε επανατοποθετημένους κλάδους στην ενότητα Επανατοποθέτηση σε επανατοποθετημένες υποβολές.
Δείχνουμε πώς να τη χρησιμοποιήσουμε με μια διεύθυνση URL για να έλξουμε αλλαγές με τη μία στην ενότητα Checkοut απομακρυσμένων κλάδων.
Τέλος, αναφέρουμε πολύ γρήγορα ότι μπορούμε να χρησιμοποιήσουμε την επιλογή -verify-signatures για να επαληθεύσουμε ότι οι υποβολές που έχουμε έλξει έχουν υπογραφεί με GPG στην ενότητα Υπογραφή υποβολών.
git push
Η εντολή git push χρησιμοποιείται για να επικοινωνήσουμε με ένα άλλο αποθετήριο, να υπολογίσουμε τι έχει η τοπική βάση δεδομένων μας που δεν το έχει το απομακρυσμένο αποθετήριο και στη συνέχεια ωθεί τη διαφορά στο άλλο αποθετήριο.
Απαιτεί πρόσβαση εγγραφής στο άλλο αποθετήριο, συνεπώς εμπλέκει κάποιου είδους ταυτοποίηση.
Αρχικά εξετάζουμε την εντολή git push στην ενότητα Ώθηση δεδομένων σε απομακρυσμένα αποθετήρια.
Εδώ καλύπτουμε τα βασικά στοιχεία της ώθησης ενός κλάδου σε ένα απομακρυσμένο αποθετήριο.
Στην ενότητα Ωθήσεις προχωρούμε λίγο πιο βαθιά στην ώθηση συγκεκριμένων κλάδων και στην ενότητα Παρακολούθηση κλάδων βλέπουμε πώς μπορούμε να ρυθμίσουμε παρακολουθούμενος κλάδους ώστε να ωθούμε σε αυτούς αυτόματα.
Στην ενότητα Διαγραφή απομακρυσμένων κλάδων χρησιμοποιούμε τη σημαία --delete για να διαγράψουμε έναν κλάδο στον διακομιστή με την git push.
Σε όλη την ενότητα Συνεισφέροντας σε ένα έργο βλέπουμε αρκετά παραδείγματα χρήσης της git push για να μοιραζόμαστε την εργασία σε κλάδους σε πολλά αποθετήρια.
Βλέπουμε πώς να τη χρησιμοποιούμε για να μοιραζόμαστε τις ετικέτες που έχουμε φτιάξει με την επιλογή --tags στην ενότητα Κοινοποίηση ετικετών.
Στην ενότητα Δημοσίευση αλλαγών σε υπομονάδες χρησιμοποιούμε την επιλογή --recurse-submodules για να ελέγξουμε ότι όλα τα submodules μας έχουν δημοσιευθεί πριν ωθήσουμε το superproject, κάτι που μπορεί να είναι πραγματικά χρήσιμο όταν χρησιμοποιούμε submodules.
Στην ενότητα Άλλα άγκιστρα πελατών μιλάμε εν συντομία για το άγκιστρο pre-push, το οποίο είναι ένα script που μπορούμε να ρυθμίσουμε να τρέχει πριν ολοκληρωθεί η ώθηση για να επιβεβαιωθεί ότι επιτρέπεται να ωθηθεί.
Τέλος, στην ενότητα Ώθηση refspecs εξετάζουμε την ώθηση με πλήρη refspec αντί για τις γενικές συντομεύσεις που χρησιμοποιούνται κανονικά. Αυτό μπορεί να μας βοηθήσει να είμαστε πολύ συγκεκριμένοι σχετικά με το έργο που θέλουμε να μοιραστούμε.
git remote
Η εντολή git remote είναι ένα εργαλείο διαχείρισης των απομακρυσμένων αποθετηρίων μας.
Μας επιτρέπει να αποθηκεύουμε μεγάλες διευθύνσεις URL ως σύντομα ψευδόνυμα, όπως “origin”, ώστε να μην χρειάζεται να τις πληκτρολογούμε συνεχώς.
Μπορούμε να έχουμε αρκετές τέτοιες και η εντολή git remote χρησιμοποιείται για την προσθήκη, αλλαγή και διαγραφή τους.
Αυτή η εντολή καλύπτεται λεπτομερώς στην ενότητα Δουλεύοντας με απομακρυσμένα αποθετήρια, συμπεριλαμβανομένης της καταχώρισης, προσθήκης, αφαίρεσης και της μετονομασίας των απομακρυσμένων αποθετηρίων.
Χρησιμοποιείται σχεδόν σε κάθε επόμενο κεφάλαιο του βιβλίου, αλλά πάντα στο τυπικό σχήμα git remote add <name> <url>.
git archive
Η εντολή git archive χρησιμοποιείται για τη δημιουργία ενός αρχείου αρχειοθήκης ενός συγκεκριμένου στιγμιότυπου του έργου.
Χρησιμοποιούμε το git archive για να δημιουργήσουμε ένα tarball ενός έργου για κοινή χρήση στην ενότητα Προετοιμασία μίας δημοσιευμένης έκδοσης.
git submodule
Η εντολή git submodule χρησιμοποιείται για τη διαχείριση εξωτερικών αποθετηρίων μέσα σε ένα κανονικό αποθετήριο.
Αυτό θα μπορούσε να γίνεται π.χ. για βιβλιοθήκες ή άλλους τύπους κοινών πόρων.
Η εντολή submodule έχει πολλές υπό-εντολές (add, update, sync, κ.λπ.) για τη διαχείριση αυτών των πόρων.
Αυτή η εντολή αναφέρεται και καλύπτεται εξ ολοκλήρου στην ενότητα Υπομονάδες.