Σελίδα 1 από 2

Οδηγός ρύθμισης και χρήσης του Git και GitHub

ΔημοσίευσηΔημοσιεύτηκε: 05 Ιούλ 2011, 16:29
από evolgen
Το Git είναι ένα distributed σύστημα ελέγχου εκδόσεων κώδικα και σου προσφέρει απίστευτες ευκολίες στη σύγκριση εκδόσεων προγραμμάτων που γράφεις μόνος ή σε συνεργασία με άλλους της ομάδας σου. Θα ήθελα να πω ένα τεράστιο ευχαριστώ στο μέλος simosx για το online μάθημα Git στο IRC, αποτέλεσμα του οποίου είναι αυτός ο οδηγός για το στήσιμο και τη χρήση του συστήματος Git. Είναι γραμμένος από έναν -σχεδόν- αδαή, οπότε παρακαλώ να με διορθώσετε ή να συμπληρώσετε όπου χρειάζεται. :)

Ξεκινώντας με την εγκατάσταση:
Ανοίγουμε ένα τερματικό (πατάμε Alt+F2 και γράφουμε gnome-terminal σε Gnome) και γράφουμε την ακόλουθη εντολή για την εγκατάσταση.
Σε 11.04
Κώδικας: Επιλογή όλων
sudo apt-get install git

ή σε 10.04
Κώδικας: Επιλογή όλων
sudo apt-get install git-core


Αφού ολοκληρωθεί η εγκατάσταση, πρέπει να δώσουμε κάποιες παραμέτρους στο Git:
Κώδικας: Επιλογή όλων
git config --global user.name "Όνομα Επώνυμο"

Κώδικας: Επιλογή όλων
git config --global user.email "myemailaddress@myprovider.com"

Προφανώς βάζουμε το ονοματεπώνυμό μας και το δικό μας email.

Για δική μας διευκόλυνση, με την εντολή που ακολουθεί θα εμφανίζονται χρώματα όταν γράφουμε εντολές στο Git.
Κώδικας: Επιλογή όλων
git config --global color.ui auto

Οι παραπάνω ρυθμίσεις εφαρμόζονται μια φορά και διατηρούνται αποθηκευμένες για πάντα, στο σύστημα που βρίσκεστε τώρα. Μπορούμε να τις δούμε με
Κώδικας: Επιλογή όλων
git config -l




Ας φτιάξουμε τώρα ένα πρώτο αποθετήριο. Αρχικά, φτιάχνουμε ένα νέο κατάλογο και μπαίνουμε μέσα. π.χ
Κώδικας: Επιλογή όλων
mkdir project && cd project


Αρχικοποιούμε τον κατάλογο για να χρησιμοποιείται από το Git με τη μορφή αποθετηρίου:
Κώδικας: Επιλογή όλων
git init

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

Στη συνέχεια φτιάχνουμε το πρόγραμμα για το οποίο δημιουργήσαμε το αποθετήριο. Π.χ. το κλασικό helloworld πρόγραμμα σε Perl:
Κώδικας: Επιλογή όλων
#!/usr/bin/perl -w
print "Hello world!\n";

Το γράφουμε με τον editor της επιλογής μας (π.χ. geany, nano, gedit) και το αποθηκεύουμε στον κατάλογο project. Επειδή είναι γραμμένο σε Perl, όπως και στην Python, πρέπει πρώτα να το κάνουμε εκτελέσιμο με την εντολή:
Κώδικας: Επιλογή όλων
chmod 755 helloworld.pl


Για να δούμε την κατάσταση των αρχείων στο αποθετήριο πατάμε
Κώδικας: Επιλογή όλων
git status

Θα μας πει ότι υπάρχει ένα νέο αρχείο που δεν είναι γνωστό στο git:
Κώδικας: Επιλογή όλων
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   helloworld.pl
nothing added to commit but untracked files present (use "git add" to track)

Για να το προσθέσουμε στο αποθετήριο, γράφουμε
Κώδικας: Επιλογή όλων
git add helloworld.pl

Αν τώρα ξανατρέξουμε git status, θα μας πει:
Κώδικας: Επιλογή όλων
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   helloworld.pl
#

Για να ολοκληρώσουμε την εισαγωγή του αρχείου στο Git, γράφουμε
Κώδικας: Επιλογή όλων
git commit -m "Σχόλιο" helloworld.pl

Προφανώς όπου "Σχόλιο" γράφουμε ένα σύντομο σχόλιο για το λόγο που κάνουμε αλλαγή στο αποθετήριο. Την ίδια ακριβώς εντολή θα γράφουμε κάθε φορά που θα κάνουμε αλλαγές στον κώδικα ή στο περιεχόμενο ενός αρχείου που ήδη είναι γνωστό στο Git. Το αποτέλεσμα της εντολής είναι το εξής:
Κώδικας: Επιλογή όλων
[master (root-commit) d1134ea] Σχόλιο
1 files changed, 2 insertions(+), 0 deletions(-)
create mode 100755 helloworld.pl

Εναλλακτικά, μπορούμε να γράψουμε την εντολή ως εξής:
Κώδικας: Επιλογή όλων
git commit -m "Σχόλιο" -a

Το "-a" αναφέρεται σε όλα τα αρχεία τα οποία "γνωρίζει" το git και έχουν τροποποιηθεί από το τελευταίο commit.

Αν τώρα κάνουμε κάποιες αλλαγές στον κώδικα του helloworld.pl, μπορούμε να δούμε μια σύγκριση με την εντολή
Κώδικας: Επιλογή όλων
git diff

Για να τις ενσωματώσουμε στο αποθετήριο ξαναγράφουμε git commit όπως παραπάνω.

Για να βλέπουμε τις εκδόσεις του προγράμματός μας με γραφικό περιβάλλον, μπορούμε να εγκαταστήσουμε το πρόγραμμα gitg
Κώδικας: Επιλογή όλων
sudo apt-get install gitg

και τρέχοντάς το θα αναγνωρίσει το αποθετήριο και θα μας δείξει λεπτομέρειες από τα commits που έχουμε κάνει.

Αν για οποιοδήποτε λόγο θέλουμε να επαναφέρουμε το αποθετήριο στην κατάσταση του τελευταίου commit, γράφουμε
Κώδικας: Επιλογή όλων
git reset --hard





Ρύθμιση του GitHub και συγχρονισμός με το Git.
Πάμε στο http://www.github.com και δημιουργούμε έναν δωρεάν λογαριασμό.

Δημιουργούμε στον υπολογιστή μας ένα κλειδί SSH, το οποίο απαιτείται για την επικοινωνία με το github.com
Κώδικας: Επιλογή όλων
ssh-keygen -t rsa -C "myemailaddress@myprovider.com"

Βάζουμε έναν κωδικό και το αποθηκεύουμε στο default μέρος.

Θα δούμε τον κωδικό που δημιουργήθηκε, πατώντας
Κώδικας: Επιλογή όλων
ls -l ~/.ssh/

Το id_rsa.pub περιέχει το δημόσιο κλειδί, το οποίο θα δώσουμε στο github, ενώ το id_rsa είναι το ιδιωτικό, το οποίο το κρατάμε μόνο για εμάς.

Βάζουμε το δημόσιο κλειδί στο github.com > Account Settings > SSH Public Keys > Add another public key.

Για να φτιάξουμε ένα νέο αποθετήριο στο github.com, πάμε στην αρχική του σελίδα και πατάμε στο Create a new repository.

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

Αν έχουμε προσθέσει κάποιον συνεργάτη (collaborator) στο GitHub για το αποθετήριο και έχει προβεί σε κάποιες αλλαγές, μπορούμε να ενημερώσουμε το αποθετήριο στον υπολογιστή μας με την εντολή
Κώδικας: Επιλογή όλων
git pull --rebase


Για να κατεβάσουμε κώδικα από το GitHub στον υπολογιστή μας, βρίσκουμε το αποθετήριο που μας ενδιαφέρει, παίρνουμε το URL για το Git Read-Only και γράφουμε
Κώδικας: Επιλογή όλων
git clone URL


Κάπου εδώ τελειώνει αυτή η σύντομη εισαγωγή στον τρόπο χρήσης του Git και του GitHub.com. Περιμένω προσθήκες για τις -σίγουρες- ελλείψεις του οδηγού και άλλες συμβουλές! :)

Creative Commons License
Η εργασία υπάγεται στην άδεια Creative Commons Αναφορά-Μη εμπορική χρήση-Παρόμοια διανομή 3.0 Ελλάδα

Re: Οδηγός ρύθμισης και χρήσης του Git και GitHub

ΔημοσίευσηΔημοσιεύτηκε: 05 Ιούλ 2011, 16:47
από simosx
+1 :-)

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

Re: Οδηγός ρύθμισης και χρήσης του Git και GitHub

ΔημοσίευσηΔημοσιεύτηκε: 05 Ιούλ 2011, 18:29
από Qdata
Μπράβο για τον οδηγό @evolgen.Πολύ καλός! :thumbup:

Re: Οδηγός ρύθμισης και χρήσης του Git και GitHub

ΔημοσίευσηΔημοσιεύτηκε: 05 Ιούλ 2011, 18:54
από c7p
Μπράβο @evogen, @simosx. Αρκετά ενδιαφέρον και χρήσιμο το Git !

Re: Οδηγός ρύθμισης και χρήσης του Git και GitHub

ΔημοσίευσηΔημοσιεύτηκε: 15 Ιούλ 2011, 15:34
από MaR1oC
να το βάλουμε και στο ubuntistas αν δεν έχει μπει ήδη ;)
τι λέτε;

Re: Οδηγός ρύθμισης και χρήσης του Git και GitHub

ΔημοσίευσηΔημοσιεύτηκε: 14 Ιουν 2012, 21:36
από M.Jackson
Ευχαριστώ. Δηλαδή κάθε φορά που κάνω αλλαγή σε κάποιο αρχείο κάνω git commit -m "Σχόλιο" helloworld.pl για να μπει στο "history" για να μπορώ να τα συγκρίνω;;;

Re: Οδηγός ρύθμισης και χρήσης του Git και GitHub

ΔημοσίευσηΔημοσιεύτηκε: 14 Ιουν 2012, 21:39
από evolgen
M.Jackson έγραψε:Ευχαριστώ. Δηλαδή κάθε φορά που κάνω αλλαγή σε κάποιο αρχείο κάνω git commit -m "Σχόλιο" helloworld.pl για να μπει στο "history" για να μπορώ να τα συγκρίνω;;;

Έχω την εντύπωση πως ναι. Κάτι που έχω παραλείψει να γράψω είναι πως γενικά μπορούμε να χρησιμοποιήσουμε και την εντολή ως
Κώδικας: Επιλογή όλων
git commit -m "Σχόλιο" -a

όπου "-a" είναι όλα τα αρχεία τα οποία "γνωρίζει" το git και έχουν τροποποιηθεί από το τελευταίο commit. Εγώ αυτή την εντολή χρησιμοποιώ τώρα τελευταία και δεν είχα κανένα πρόβλημα.

Re: Οδηγός ρύθμισης και χρήσης του Git και GitHub

ΔημοσίευσηΔημοσιεύτηκε: 14 Ιουν 2012, 21:45
από M.Jackson
εννοείς ότι με την πιο πάνω εντολή ενημερώνονται όλα τα αρχεία που έχουν δεχτεί αλλαγή από το τελευταίο "update"/commit που κάναμε; το μονο προβλημα θα ειναι το comment αν το κανουμε ενα ενα θα μπορουμε να δωσουμε σε καθε αρχειο comment.

Επίσης πρέπει σε κάθε φάκελο να φτίαχνουμε νέο git? έστω ότι φτιάχνω μέσα στον φάκελο java ένα git, αλλα μέσα στο φάκελο java έχω υποφακέλους θα πρέπει να φτιάξω και για αυτούς git?

Re: Οδηγός ρύθμισης και χρήσης του Git και GitHub

ΔημοσίευσηΔημοσιεύτηκε: 14 Ιουν 2012, 21:57
από evolgen
M.Jackson έγραψε:εννοείς ότι με την πιο πάνω εντολή ενημερώνονται όλα τα αρχεία που έχουν δεχτεί αλλαγή από το τελευταίο "update"/commit που κάναμε; το μονο προβλημα θα ειναι το comment αν το κανουμε ενα ενα θα μπορουμε να δωσουμε σε καθε αρχειο comment.

Γίνεται να δώσεις διαφορετικό comment σε κάθε αρχείο, κάνοντας διαφορετικά commits. Στην περίπτωση αυτή γράφεις ως εξής:
Κώδικας: Επιλογή όλων
git commit -m "Σχόλιο1" file1
git commit -m "Σχόλιο2" file2


M.Jackson έγραψε:Επίσης πρέπει σε κάθε φάκελο να φτίαχνουμε νέο git? έστω ότι φτιάχνω μέσα στον φάκελο java ένα git, αλλα μέσα στο φάκελο java έχω υποφακέλους θα πρέπει να φτιάξω και για αυτούς git?

Αρκεί να έχεις εκτελέσει το
Κώδικας: Επιλογή όλων
git init
στον "ριζικό" φάκελο. Δηλαδή αν έχεις φτιάξει git repo στον ~/project και έχεις προσθέσει το φάκελο ~/project/examples, τότε στο git status θα εμφανιστεί ο νέος κατάλογος και τα αρχεία που περιέχει.

Re: Οδηγός ρύθμισης και χρήσης του Git και GitHub

ΔημοσίευσηΔημοσιεύτηκε: 15 Ιουν 2012, 01:28
από simosx
Με
Κώδικας: Επιλογή όλων
git init

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

Ό,τι κάνεις commit, γράφεται μέσα στον κρυφό υποκατάλογο .git.
Αν έχεις κάνει commit όλα τα αρχεία σου, τότε μπορείς να τα σβήσεις (έχει αφήσει ανέπαφο το .git όμως!) και μετά με
Κώδικας: Επιλογή όλων
git reset --hard

τα αρχεία επαναφέρονται.

Δες και τις οδηγίες που έγραψα για τους μεταφραστοές στο http://live.gnome.org/TranslationProject/GitHowTo
όπου έχει ενδιαφέρουσες πληροφορίες για αποθετήρια και εντολές.