Git
Chapters ▾ 2nd Edition

2.1 Τα θεμελιώδη στοιχεία του Git - Αποκτώντας ένα αποθετήριο Git

Αν μπορούσαμε να διαβάσουμε μόνο ένα κεφάλαιο για το Git, τότε θα έπρεπε να διαβάσουμε αυτό. Το κεφάλαιο αυτό καλύπτει κάθε βασική εντολή που χρειαζόμαστε για να κάνουμε τη συντριπτική πλειονότητα των ενεργειών που μπορούμε να κάνουμε με το Git. Στο τέλος αυτού το κεφαλαίου, θα μπορούμε να διαμορφώνουμε και να αρχικοποιούμε ένα αποθετήριο, να ξεκινήσουμε και να σταματήσουμε την παρακολούθηση αλλαγών σε αρχεία, να καταχωρούμε καθώς και να υποβάλλουμε αλλαγές. Θα δούμε επίσης πώς να ρυθμίσουμε το Git ώστε να αγνοεί ορισμένα αρχεία και μοτίβα αρχείων, πώς να αναιρέσουμε λάθη εύκολα και γρήγορα, πώς να περιηγηθούμε στο ιστορικό του έργου μας ώστε να δούμε τις αλλαγές μεταξύ των υποβολών και πώς να ωθήσουμε σε και να έλξουμε από απομακρυσμένα αποθετήρια.

Αποκτώντας ένα αποθετήριο Git

Μπορούμε να δημιουργήσουμε ένα έργο στο Git χρησιμοποιώντας δύο βασικές προσεγγίσεις. Η πρώτη παίρνει ένα υπάρχον έργο ή κατάλογο και το εισάγει στο Git. Η δεύτερη κλωνοποιεί ένα υπάρχον αποθετήριο Git από έναν άλλο διακομιστή.

Αρχικοποιώντας ένα αποθετήριο σε έναν υπάρχοντα Κατάλογο

Αν θέλουμε να ξεκινήσουμε την παρακολούθηση ενός υπάρχοντος έργου στο Git, θα χρειαστεί να πάμε στον κατάλογο του έργου μας και να πληκτρολογήσουμε

$ git init

Η εντολή αυτή δημιουργεί έναν νέο υπο-κατάλογο με το όνομα .git ο οποίος περιέχει όλα τα απαραίτητα αρχεία για το αποθετήριο. Ουσιαστικό ο υπο-κατάλογος αυτός αποτελεί ένα σκελετό για το αποθετήριό μας. Στο σημείο αυτό, τίποτα δεν παρακολουθείται ακόμα από το έργο μας. (Βλ. Εσωτερική λειτουργία του Git για περισσότερες πληροφορίες σχετικά με το τι ακριβώς αρχεία περιέχονται στον κατάλογο .git που μόλις δημιουργήσαμε.)

Αν θέλουμε να ξεκινήσουμε τον έλεγχο έκδοσης στα υπάρχοντα αρχεία, θα πρέπει να ξεκινήσουμε την παρακολούθηση αυτών των αρχείων και να κάνουμε μια πρώτη υποβολή τους. Για να το επιτύχουμε αυτό θα χρειαστούμε μερικές εντολές git add οι οποίες προσδιορίζουν τα αρχεία που θέλουμε να παρακολουθούμε και μια εντολή git commit:

$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'

θα εξετάσουμε σε λίγο τι κάνουν οι παραπάνω εντολές. Στο σημείο αυτό, έχουμε ένα αποθετήριο Git με κάποια παρακολουθούμενα αρχεία και μια αρχική υποβολή.

Κλωνοποιώντας ένα υπάρχον αποθετήριο

Αν θέλουμε να αποκτήσουμε ένα αντίγραφο ενός υπάρχοντος αποθετηρίου Git —για παράδειγμα, ένα έργο στο οποίο θα θέλαμε να συνεισφέρουμε— η εντολή που χρειαζόμαστε είναι git clone. Αν είμαστε εξεικοιωμένοι με άλλα συστήματα ελέγχου έκδοσης όπως το Subversion, θα παρατηρήσουμε ότι η εντολή είναι "clone" και όχι "checkout". Αυτή είναι μια σημαντική διάκριση· το Git παίρνει ένα πλήρες αντίγραφο σχεδόν όλων των δεδομένων που έχει ο διακομιστής αντί για ένα απλό αντίγραφο. Με την εντολή git clone όλες οι εκδόσεις του κάθε αρχείου του έργου αποθηκεύονται τοπικά. Στην πραγματικότητα, αν ο δίσκος του διακομιστή μας αλλοιωθεί, μπορούμε να χρησιμοποιήσουμε οποιονδήποτε από τους κλώνους του ώστε να θέσουμε τον διακομιστή στην κατάσταση που ήταν όταν κλωνοποιήθηκε.

Για να κλωνοποιήσουμε ένα αποθετήριο, εκτελούμε την εντολή git clone [url]. Για παράδειγμα, αν θέλουμε να κλωνοποιήσουμε τη βιβλιοθήκη libgit2 του Git, θα πρέπει να εκτελέσουμε:

$ git clone https://github.com/libgit2/libgit2

Η εντολή αυτή δημιουργεί έναν κατάλογο με το όνομα libgit2, αρχικοποιεί έναν κατάλογο .git μέσα σε αυτόν, κατεβάζει όλα τα δεδομένα για αυτό το αποθετήριο καθώς και ένα αντίγραφο από την τελευταία έκδοση. Αν περιηγηθούμε στον καινούριο κατάλογο libgit2, θα δούμε τα αρχεία του έργου μέσα σε αυτόν, έτοιμα για να χρησιμοποιηθούν. Αν θέλουμε να κλωνοποιήσουμε το αποθετήριο σε έναν κατάλογο με διαφορετικό όνομα, μπορούμε να το ορίσουμε με την παρακάτω εναλλακτική της εντολής:

$ git clone https://github.com/libgit2/libgit2 mylibgit

Η εντολή αυτή έχει το ίδιο αποτέλεσμα με την προηγούμενη, αλλά ο κατάλογος που θα δημιουργηθεί ονομάζεται mylibgit.

Το Git έχει διάφορα πρωτόκολλα μεταφοράς που μπορούμε να χρησιμοποιήσουμε. Το προηγούμενο παράδειγμα χρησιμοποεί το πρωτόκολλο https://, ενδέχεται επίσης να δούμε το git:// ή το user@server:path/to/repo.git το οποίο χρησιμοποιεί το πρωτόκολλο μεταφοράς SSH. Στο κεφάλαιο Εγκατάσταση του Git σε διακομιστή θα μας παρουσιαστούν όλες οι διαθέσιμες εναλλακτικές που μπορεί να χρησιμοποιήσει ο διακομιστής ώστε να αποκτήσει πρόσβαση στο αποθετήριό μας, καθώς και τα πλεονεκτήματα και μειονεκτήματα της κάθε εναλλακτικής.