Αυτό το βιβλίο καλύπτει τον τρόπο χρήσης του Git με καμιά τριανταριά ρήματα, όπως checkout
, branch
, remote
κ.ο.κ.
Αλλά επειδή το Git ήταν αρχικά ένα εργαλείο για VCS αντί για ένα πλήρως φιλικό-προς-τον-χρήστη VCS, έχει μερικά ρήματα που κάνουν εργασίες χαμηλού επιπέδου και είχαν σχεδιαστεί για να είναι συνδεδεμένες μεταξύ τους ακολουθώντας το στυλ του UNIX ή να καλούνται από script.
Σε αυτές τις εντολές αναφερόμαστε γενικά ως εντολές ``διοχέτευσης'' και οι πιο φιλικές προς το χρήστη εντολές ονομάζονται εντολές ''πορσελάνης''.
Τα πρώτα εννέα κεφάλαια του βιβλίου ασχολούνται σχεδόν αποκλειστικά με εντολές πορσελάνης. Αλλά σε αυτό το κεφάλαιο, θα ασχοληθούμε κυρίως με τις χαμηλότερου επιπέδου εντολές διοχέτευσης, επειδή μας δίνουν πρόσβαση στις εσωτερικές λειτουργίες του Git και βοηθούν να δείξουμε πώς και γιατί το Git κάνει ό,τι κάνει. Πολλές από αυτές τις εντολές δεν προορίζονται να χρησιμοποιηθούν στη γραμμή εντολών, αλλά να χρησιμοποιηθούν ως δομικά στοιχεία για νέα εργαλεία και εξατομικευμένα script.
Όταν εκτελούμε την git init
σε νέο ή υπάρχοντα κατάλογο, το Git δημιουργεί τον κατάλογο .git
, ο οποίος είναι ο τόπος όπου βρίσκονται σχεδόν όλα όσα αποθηκεύει και χειρίζεται το Git.
Αν θέλουμε να δημιουργήσουμε αντίγραφα ασφαλείας ή να κλωνοποιήσουμε το αποθετήριο, η αντιγραφή αυτού του καταλόγου θα μας δώσει σχεδόν ό,τι χρειαζόμαστε.
Όλο αυτό το κεφάλαιο ασχολείται βασικά με ό,τι κατοικεί σε αυτόν τον κατάλογο.
Ο κατάλογος αυτός έχει περίπου την εξής μορφή:
$ ls -F1
HEAD
config*
description
hooks/
info/
objects/
refs/
Ενδέχεται να δούμε και κάποια άλλα αρχεία, αλλά αυτό είναι ένα αποθετήριο που μόλις δημιουργήθηκε με την git init
—αυτά είναι τα μόνα που βλέπουμε εκ προεπιλογής.
Το αρχείο description
χρησιμοποιείται μόνο από το πρόγραμμα GitWeb, οπότε δεν θα ασχοληθούμε με αυτό.
Το αρχείο config
περιέχει τις επιλογές διαμόρφωσης που σχετίζονται με το συγκεκριμένο έργο και ο κατάλογος info
διατηρεί ένα καθολικό (global) αρχείο αποκλεισμού , το .gitignore, για μοτίβα που δεν θέλουμε να παρακολουθούμε.
Ο κατάλογος hooks
περιέχει τα script-άγκιστρα τόσο από την πλευρά του πελάτη όσο και από την πλευρά του διακομιστή, τα οποία αναλύονται λεπτομερώς στην ενότητα ch08-customizing-git.asc.
Αυτό αφήνει τέσσερα σημαντικά στοιχεία: τα αρχεία HEAD
και index
(το τελευταίο δεν έχει δημιουργηθεί ακόμα) και τους καταλόγους objects
και refs
.
Αυτά είναι τα κεντρικά μέρη του Git.
Ο κατάλογος objects
αποθηκεύει όλο το περιεχόμενο που χρειάζεται η βάση δεδομένων μας, ο κατάλογος refs
αποθηκεύει δείκτες σε αντικείμενα υποβολής σε εκείνα τα δεδομένα (κλάδοι), το αρχείο HEAD
δείχνει στον κλάδο στον οποίο μόλις έχουμε μεταβεί και το αρχείο index
είναι το σημείο όπου το Git αποθηκεύει τις πληροφορίες του σταδίου καταχώρισης.
Θα εξετάσουμε τώρα καθένα από αυτά τα τμήματα λεπτομερώς για να δούμε πώς λειτουργεί το Git.