Δημοσιεύτηκε: 05 Ιουν 2009, 22:48
από Μάριος Ζηντίλης
Το πιο κάτω άρθρο αποτελεί μια επιμελημένη εκδοχή του αρχείου καταγραφής ενός μαθήματος που μας έκανε στο IRC ο simosx.

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

1. Το πρώτο είναι να βάλουμε το πακέτο για git. Σε Ubuntu Linux είναι το git-core.
Κώδικας: Επιλογή όλων
sudo apt-get install git-core

2. Φτιάχνουμε ένα υποκατάλογο στο λογαριασμό μας (π.χ. κάτω από το /home/user/), με π.χ. όνομα WORK. Οπότε, τα αποθετήρια θα τα ρίχνουμε σε ένα υποκατάλογο μόνο. Θα προτιμήσουμε την κατάσταση όπου συνδέουμε το αποθετήριο με μια από τις υπηρεσίες git. Από όλες τις υπηρεσίες, αυτή που είναι πιο δημοφιλής και καλή για νέους χρήστες είναι το github.com

Οπότε, στο σημείο αυτό πάμε στο http://www.github.com/ και δημιουργούμε ένα λογαριασμό. Στη δημιουργία λογαριασμού θα ζητηθεί το δημόσιο κλειδί μας για SSH. Αν έχετε ήδη στο ~/.ssh/ ένα id_rsa.pub, βάζετε το κλειδί. Αν δεν έχετε κλειδί SSH, μπορείτε με ssh-keygen (γίνεται μια φορά).
Είναι καλό να μπει το κλειδί SSH. Με το κλειδί SSH μπορείτε να στέλνετε τις ενημερώσεις δίχως να ζητάει κωδικό κάθε φορά.

Spoiler: show
Στο ssh-keygen βάλτε για passphrase έναν οποιονδήποτε κωδικό. Προσπαθήστε να κρατήσετε τον κωδικό αυτό. Μετά, με τον ίδιο κωδικό μπορείτε να μπαίνετε π.χ. στο dreamhost, και όπου αλλού έχετε λογαριασμό SSH. Το κλειδί αυτό είναι από τα σημαντικά σας κλειδιά. Υπάρχει πολύ καλή υποστήριξη από GNOME με ssh. Βάζεις το passphrase μια φορά και μετά δε χρειάζεται να γράψεις κωδικούς, κτλ. Το github απλά δουλεύει, το ssh στο dreamhost και αλλού.


Αν πάμε στο https://github.com/ βλέπουμε την αρχική σελίδα με τα στοιχεία μας επάνω δεξιά. Στη δεξιά στήλη αναφέρει «Your repositories». Tο επόμενο στάδιο είναι να φτιάξουμε ένα δοκιμαστικό αποθετήριο, και να κάνουμε τις δοκιμές μας.

Κάνουμε κλικ στο Your Repositories (create a new one)
Δώστε project name π.χ. mytest
Η περιγραφή είναι ελεύθερο κείμενο.
Το homepage δεν είναι αναγκαίο.
Και «Create repository».

3. Στο επόμενο στάδιο αναφέρει να τρέξουμε μια σειρά από εντολές.
Εκεί που λέει «Global setup», είναι εντολές που τρέχουμε μια φορά, σήμερα. Εκτελέστε τες.
Με τις εντολές αυτές θα δημιουργηθεί απλά το αρχείο ~/.gitconfig με το όνομα, ηλ. αλληλογραφία.
Έξτρα! Εκτελέστε και:
Κώδικας: Επιλογή όλων
git config --global color.ui auto

Bάζει ωραία χρώματα μετά, είναι ωραίο.

Με:
Κώδικας: Επιλογή όλων
git config -l

μπορείτε να δείτε τις ρυθμίσεις αυτές (αν βαριέστε το cat ~/.gitconfig). Μόλις τελειώσετε με το Global setup, πάτε στο Next steps και εκτελέστε τις εντολές. Με τις εντολές αυτές απλά βάζετε ένα README στο αποθετήριο. Tο directory που θέλει να φτιάξετε θα γίνει μέσα στο WORK directory;

Η διεύθυνση του αποθετηρίου σας τώρα θα είναι κάτι σαν http://github.com/όνομα_χρήστη/mytest/tree/master

Τώρα έχουμε φτιάξει αποθετήρια στους υπολογιστές μας, και τους έχουμε συνδέσει με το δημόσιο χώρο μας στο github.com. Αυτή τη στιγμή είμαστε σε κατάσταση πλήρους ενημέρωσης (ότι έχουμε στο δίσκο υπάρχει και στο github.com). Ας δούμε πως μπορούμε να προσθέσουμε κάτι σε εκείνο το README.

α. με κάποιο επεξεργαστή κειμένου γράφουμε στο README μερικές γραμμές, π.χ. «Αυτή είναι μια δοκιμή στη χρήση του git», κ.τλ. Μόλις τελειώσετε, τρέξτε git status και θα πρέπει να εμφανίζει ένα μήνυμα που θα δείχνει ότι το git κατάλαβε ότι έχει αλλάξει ένα από τα αρχεία που παρακολουθεί (track) και το αναφέρει.

Εδώ πρέπει να κάνουμε «commit» την αλλαγή που κάναμε. Υπάρχουν διάφοροι τρόποι (όλοι σχεδόν ίδιοι). Προσωπικά προτιμώ:
Κώδικας: Επιλογή όλων
git commit README -m "Updated the README file"


Δηλαδή, 'git commit' <ποιο αρχείο/α> -m "message for commit"

Είναι σημαντικό να δείτε τώρα ότι το 'commit' που κάναμε έχει γίνει μόνο τοπικά, στο τοπικό αντίγραφο του αποθετηρίου. H εντολή 'git commit' κατέγραψε το έργο που κάναμε (τροποποίηση του README) στο τοπικό αποθετήριο. Για να στείλουμε τις αλλαγές που κάναμε στο github, οπότε να είμαστε πλήρως ενημερωμένοι, εκτελούμε:
Κώδικας: Επιλογή όλων
git push


Τώρα, πού ξέρει το git για τα αρχεία που βάζουμε, τις αλλαγές, κτλ; Για τρέξτε:
Κώδικας: Επιλογή όλων
git log

Με την εντολή git log βλέπουμε τα commit που έχουμε κάνει στο τοπικό αποθετήριο. Το git βάζει ότι τα δεδομένα για το αποθετήριο στον κρυφό κατάλογο '.git'. Μπορείτε να τον εντοπίσετε μέσα στον κατάλογο του αποθετηρίου;

Το README που βλέπετε υπάρχει και σε συμπιεσμένη μορφή μέσα στο '.git/...'. Υπάρχει εκεί με τις πληροφορίες των αλλαγών που έχουν γίνει. Το README και τα άλλα αρχεία που θα βάλετε πιθανόν μετά είναι το 'working copy'. Τα ίδια αρχεία υπάρχουν (αφού κάνετε commit) και μέσα στο .git. Οπότε διατηρούμε εκείνο τον υποκατάλογο. Τα αρχεία αποθηκεύονται με ειδικό τρόπο μέσα στο .git, με συμπίεση, και χρήση του MD5 checksum, κ.τλ, επομένως δεν το βρίσκετε το αρχείο που φτιάξατε ως README μέσα στο τοπικό αποθετήριο.

Με τις εντολές του git γίνεται το πάρε δώσε μεταξύ .git και του τρέχοντος working copy των αρχείων που έχουμε μπροστά μας.

Κάντε μερικές ακόμα προσθήκες/αλλαγές στο README. Μόλις τελειώσετε, εκτελέστε 'git diff' (όχι ακόμα commit), και δείχνει τις διαφορές.
Τώρα κάντε commit:
Κώδικας: Επιλογή όλων
git commit README -m "Updated the README file"

και μετά
Κώδικας: Επιλογή όλων
git push


Tώρα, το τελευταίο στάδιο. Μιας και έχουμε τα αρχεία στο αποθετήριο στο github.com, σβήνουμε τους καταλόγους με τη δουλειά μας. Αυτό είναι για εκπαιδευτικούς σκοπούς, δεν είναι κάτι που κάνουμε έτσι για την πλάκα.
Κώδικας: Επιλογή όλων
rm -fr mytest

Ο στόχος είναι να δούμε πως δημιουργούμε το τοπικό αποθετήριο από το δημόσιο που έχουμε στο github.

Αν δείτε στο http://github.com/όνομα_χρήστη/mytest/tree/master αναφέρει ένα σύνδεσμο για Private clone URL. Κάντε κλικ και αντιγραφή. «Your Clone URL:»
Κώδικας: Επιλογή όλων
git clone git@github.com:όνομα_χρήστη/mytest.git


Η εντολή git clone δημιουργεί ένα πλήρη κλώνο του αποθετηρίου. Οπότε τώρα είμαστε πλήρεις με το αποθετήριο. Έφτιαξε ακριβώς το ίδιο που είχαμε πριν, πριν σβήσουμε τον κατάλογο.

Λοιπόν, ολοκληρώσαμε μια ώρα με το e-μάθημα. Θα σταματήσουμε εδώ. Στο σημείο αυτό ξέρουμε τα πιο σημαντικά για να φτιάχνουμε δημόσια αποθετήρια και να προσθέτουμε τη δουλειά μας, ένα στάδιο κάθε φορά.

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