Git
Chapters ▾ 2nd Edition

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, κ.λπ.) για τη διαχείριση αυτών των πόρων.

Αυτή η εντολή αναφέρεται και καλύπτεται εξ ολοκλήρου στην ενότητα Λειτουργικές υπομονάδες.