Git

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Αναθεώρηση της 16:15, 22 Αυγούστου 2014 υπό τον El06150 (Συζήτηση | συνεισφορές)

(διαφορά) ←Παλαιότερη αναθεώρηση | Τελευταία αναθεώρηση (διαφορά) | Νεώτερη αναθεώρηση → (διαφορά)
Μετάβαση σε: πλοήγηση, αναζήτηση

Το git είναι ένα version control σύστημα ανοιχτού κώδικα. Χρησιμοποιείται για την ανάπτυξη λογισμικού μέσω του distributed development (πολλοί προγραμματιστές συμμετέχουν και συνεισφέρουν στο ίδιο project) αλλά και της έννοιας των snapshots του κώδικα, που αποκαλούνται commits. Τα commits είναι διαφορετικές εκδόσεις του κώδικα, και ουσιαστικά αποτελούν εικόνες της εκάστοτε κατάστασης στην οποία βρίσκεται το κάθε project.

GitLab

Διαβάστε περισσότερα στη σελίδα GitLab

Το foss.ntua διατηρεί git server powered by GitLab.

Πώς το git ιεραρχεί τα δεδομένα

Το git, λειτουργώντας στο σύστημα μας, εν γένει δημιουργεί μια δικιά του βάση δεδομένων (σαν ένα filesystem) το οποίο αντί να έχει ως βασική λειτουργία την αποθήκευση, τροποποίηση και διαγραφή δεδομένων, μόνο αποθηκεύει καινούργια δεδομένα. Στη ρίζα του συστήματος αυτού βρίσκεται το repository, που είναι το working directory του κάθε project. Με οποιαδήποτε αλλαγή κάποιου αρχείου στο repository μας, το git ανιχνεύει τις αλλαγές και προσθέτει στη βάση δεδομένου του ό,τι είναι διαφορετικό. Τα δεδομένα που έμειναν ανέπαφα απλώς «συνδέονται» με τις προηγούμενες υπάρξεις αυτών ώστε να μην υφίστανται πολλαπλές υπάρξεις του ίδιου αρχείου.

Εγκαθιστώντας το git

Το git μπορεί να εγκατασταθεί είτε κάνοντας compile το source, είτε εγκαθιστώντας το αντίστοιχο πακέτο για τη διανομή μας. Ο πηγαίος κώδικας του git βρίσκεται στο http://git-scm.com/download. Για διανομές βασισμένες σε Debian,

apt-get install git

Για fedora,

yum install git-core

Για archlinux

pacman -S git


Κλειδιά SSH

Μετά την εγκατάσταση του git πρέπει να προσθέσουμε ένα κλειδί SSH ώστε να μπορούμε να συνδεόμαστε με κάποιο repository. Για να ελέγξουμε αν ήδη έχουμε κάποιο κλειδί SSH που μπορούμε να χρησιμοποιήσουμε την εντολή cat ~/.ssh/id_rsa.pub. Αν εμφανιστεί μια μεγάλη συμβολοσειρά που αρχίζει είτε με ssh-rsa είτε με ssh-dsa τότε ήδη έχουμε ένα κλειδί και μπορούμε να το χρησιμοποιήσουμε.

Στην περίπτωση που θα χρησιμοποιήσουμε το ήδη υπάρχον κλειδί τότε αντιγράφουμε ΟΛΗ την έξοδο της παραπάνω εντολής και πάμε στις επιλογές του προφίλ μας (profile settings) που είναι το εικονίδιο με ένα ανθρωπάκι στην πάνω δεξιά γωνιά του gitLab. Εκεί επιλέγουμε την καρτέλα SSH και κλικάρουμε στο κουμπί που λέει "Add SSH Key". Δίνουμε έναν τίτλο και κάνουμε paste το κλειδί μας και τέλος πατάμε "Add key".

Αφού το κάνουμε αυτό πρέπει να ενημερώσουμε το ssh να χρησιμοποιεί το συγκεκριμένο κλειδί όταν θα στέλνει αρχεία στο gitLab. Για να γίνει αυτό θα ανοίξουμε το αρχείο ~/.ssh/config εκεί θα προσθέσουμε στο τέλος του αρχείου τις παρακάτω γραμμές

Host git.foss.ntua.gr
  User username
  Hostname git.foss.ntua.gr
  Port 2112
  PreferredAuthentications publickey
  IdentityFile /home/user/.ssh/my_private_key

όπου User είναι το όνομα χρήστη που έχουμε επιλέξει και το IdentityFile είναι το αρχείο με το private key (θα έχει το ίδιο όνομα με το public αλλά δε θα τελειώνει σε .pub)

Δημιουργώντας ένα κλειδί

Εαν δε θέλουμε να χρησιμοποιήσουμε ένα ήδη υπάρχον κλειδί ή δεν έχουμε κανέναν κλειδί τότε πρέπει να φτιάξουμε ένα καινούριο. Αυτό γίνεται πληκτρολογώντας:

ssh-keygen -b 4096 -t rsa -C "me@some_host" -f /home/me/.ssh/some_key_to_some_host

Κατά τη διάρκεια της εκτέλεσης αυτής της εντολής θα μας ζητηθεί που θέλουμε να αποθηκεύσουμε το κλειδί και πώς να το ονομάσουμε. Πατώντας Enter μπορούμε να επιλέξουμε το default. Επίσης θα μας ζητηθεί να επιλέξουμε ένα password για το κλειδί. Είναι καλή πρακτική να έχουμε έναν κωδικό για το ssh κλειδί μας αλλά μπορούμε να παρακάμψουμε αυτό το βήμα πατώντας απλά Enter. Σημειώστε ότι ο κωδικός που θα επιλέξετε ΔΕΝ αλλάζει και ΔΕ μπορείτε να τον βρείτε κάπως αν τον ξεχάσετε.

Χρησιμοποιώντας το Git

Το πρώτο πράγμα που πρέπει να κάνουμε για να ξεκινήσουμε να χρησιμοποιούμε το git είναι να δώσουμε τιμές σε κάποιες παραμέτρους. Για να το κάνουμε αυτό πληκτρολογούμε:

git config --global user.name "<username>"
git config --global user.email "<email>"

όπου <username> και <email> είναι το Username και το email μας αντίστοιχα

Φτιάχνοντας ένα καινούριο repository

Για να φτιάξουμε ένα νέο repository στο gitLab του FossNtua καταρχάς συνδεόμαστε με τον λογαριασμό μας και πατάμε πάνω δεξιά το κουμπί με όνομα New Project και σύμβολο ένα "+"

Στη σελίδα που εμφανίζεται μπορούμε να επιλέξουμε ένα όνομα για το project μας μια περιγραφή αλλά και το visibility level.

-Private σημαίνει ότι μόνο εμείς και όποιος άλλος έχει authorisation από εμάς μπορεί να δει το project
-Internal σημαίνει ότι μόνο όσοι έχουν λογαριασμό στο gitlab μπορούν να δουν το project
-Public σημαίνει ότι μπορεί να το δει ο καθένας

Στην επόμενη οθόνη θα έχει τις εντολές που πρέπει να εκτελέσουμε για να ξεκινήσουμε τι οποίος χάρη πληρότητας τις παραθέτουμε κι εδώ:

mkdir <project_name> 
cd <project_name>
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@git.foss.ntua.gr:<username>/<project_name>.git
git push -u origin master

Εάν έχουμε ήδη ένα directory με κάποιο git repository τότε πρέπει να εκτελέσουμε τις παρακάτω εντολές:

cd existing_git_repo
git remote add origin git@git.foss.ntua.gr:<username>/<project_name>.git
git push -u origin master

Κατεβάζοντας ένα repository

Εάν θέλουμε να κατεβάσουμε στον υπολογιστή μας τότε πηγαίνουμε στο directory στο οποίο θέλουμε να δημιουργηθεί το repository και πληκτρολογούμε:

git clone [url]

Όπου το url είναι η διεύθυνση του repository που θέλουμε να κατεβάσουμε.

πχ για ένα Project στο gitlab της κοινότητας που ονομάζεται bar και ανήκει στον χρήστη foo θα μπορούσαμε να γράψουμε:

git clone git@git.foss.ntua.gr:foo/bar.git

Προσθέτοντας αρχεία

Αφού φτιάξουμε το νέο repository πρέπει να μπορούμε και να προσθέτουμε τα αρχεία το οποία θέλουμε να περιέχει. Γι θεωρούμε λοιπόν ότι μέσα σε όλα τα αρχεία που περιέχει το directory του repository στον υπολογιστή μας υπάρχει και το αρχείο foo.txt . Για να το προσθέσουμε στο repository πρέπει να γράψουμε την εντολή

git add [path/to/file/]foo.txt

Τώρα πρέπει να πούμε στο git να πάρει ένα snapshot του project μας στην τωρινή του κατάσταση. Αυτό γίνεται γράφοντας:

git commit -m "<message>"

όπου το <message> είναι ένα σύντομο μύνημα που περιγράφει τι κάναμε στο συγκεκριμένο commit. Για παράδειγμα θα μπορούσε να ήταν "Added file foo.txt"

Τέλος πρέπει να στείλουμε το snapshot αυτό στον server. Γράφουμε λοιπόν:

git push origin master

Η ίδια διαδικασία πρέπει να ακολουθηθεί και σε περίπτωση που κάποιο αρχείο ήδη υπάρχει στο repository αλλά το έχουμε τροποποιήσει αφού το git δεν υποθέτει ότι τα αρχεία που θέλουμε να ανεβάσουμε είναι αυτά που έχουμε εμείς στο δίσκο μας

"Reading material" για git add και git commit