-
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 stash και clean
- 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 στο Eclipse
- A1.4 Το Git στο Bash
- A1.5 Το Git στο Zsh
- A1.6 Το Git στο Powershell
- A1.7 Ανακεφαλαίωση
-
A2. Appendix B: Ενσωμάτωση του Git στις εφαρμογές μας
- A2.1 Γραμμή εντολών Git
- A2.2 Libgit2
- A2.3 JGit
-
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 για να έλξουμε αλλαγές με τη μία στην ενότητα Checking Out απομακρυσμένους κλάδους.
Τέλος, αναφέρουμε πολύ γρήγορα ότι μπορούμε να χρησιμοποιήσουμε την επιλογή -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 <όνομα> <url>
.
git archive
Η εντολή git archive
χρησιμοποιείται για τη δημιουργία ενός αρχείου αρχειοθήκης ενός συγκεκριμένου στιγμιότυπου του έργου.
Χρησιμοποιούμε το git archive
για να δημιουργήσουμε ένα tarball ενός έργου για κοινή χρήση στην ενότητα Προετοιμασία μίας έκδοσης.
git submodule
Η εντολή git submodule
χρησιμοποιείται για τη διαχείριση εξωτερικών αποθετηρίων μέσα σε ένα κανονικό αποθετήριο.
Αυτό θα μπορούσε να γίνεται π.χ. για βιβλιοθήκες ή άλλους τύπους κοινών πόρων.
Η εντολή submodule
έχει πολλές υπό-εντολές (` add`, update
, sync
, κ.λπ.) για τη διαχείριση αυτών των πόρων.
Αυτή η εντολή αναφέρεται και καλύπτεται εξ ολοκλήρου στην ενότητα Λειτουργικές υπομονάδες.