Οδηγός για το... Git & Github

Σχετικά έγγραφα
Σεμινάριο Git & GitLab. Γιώργος Τσιάτσιος Δημήτρης Κάσσος

Σύντομος Οδηγός Github Μηνάς Δασυγένης (

Σεμινάριο Git & GitHub. Θέμης Παπαμελετίου Διονύσης Ζήνδρος

Σεμινάριο Git & GitLab. Τάκης Παναγόπουλος Νικόλας Μπομπέτσης

Εργαστήριο 2. Εισαγωγή στο Git Versioning System

Βάιος Κολοφωτιάς Msc Informational Systems. Μια εισαγωγή στο GIT

Subversion. Τριγάζη Ελισάβετ. Επιβλέπων: Μηνάς Δασυγένης

Αρχιτεκτονική Υπολογιστών

Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών ΗΥ463 Συστήματα Ανάκτησης Πληροφοριών Χειμερινό Εξάμηνο

Θερινό Σχολείο, Ιουλίου Εισαγωγή στο. Αχιλλέας Πιπινέλης. Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας

Version Control Systems Mercurial SCM. Μανώλης Κιαγιάς

Εισαγωγή στα SCM εργαλεία και στο Subversion

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

Εργαλεία Ανάπτυξης Κώδικα ΕΛ/ΛΑΚ. Απόστολος Βόγκλης Βασίλειος Καραβασίλης Μονάδα Αριστείας ΕΛΛΑΚ ΕΤΕΠΗ 25/06/2014

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

Οδηγίες εγκατάστασης και χρήσης Java σε προσωπικό υπολογιστή

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

Σεμινάριο Git & GitHub Ημέρα 2

Open eclass Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης

Πανεπιστήμιο Ιωαννίνων

CS255 - Programming Lab

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

Tο περιβάλλον Code::Blocks

SUBVERSION. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Πως δημιουργούμε ένα νέο αρχείο κειμένου; Με τρεις τρόπους:

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

Μια εισαγωγή στο Linux με την διανομή Fedora. Βάιος Κολοφωτιάς MSc Informational Systems

Άδειες open source Εργαλεία Ανάπτυξης Κώδικα ΕΛ/ΛΑΚ. Απόστολος Βόγκλης Βασίλειος Καραβασίλης Μονάδα Αριστείας ΕΛΛΑΚ ΕΤΕΠΗ 22/10/2014

Άδειες open source Εργαλεία Ανάπτυξης Κώδικα ΕΛ/ΛΑΚ. Απόστολος Βόγκλης Βασίλειος Καραβασίλης Μονάδα Αριστείας ΕΛΛΑΚ ΕΤΕΠΗ 9/3/2015

Dropbox. Τι είναι Dropbox; ΓΕΝΙΚΑ

ΕΓΚΑΤΑΣΤΑΣΗ ΕΦΑΡΜΟΓΩΝ ΓΙΑ ΠΡΟΣΩΠΙΚΟ ΥΠΟΛΟΓΙΣΤΗ (MS WINDOWS, LINUX, MACOS)

Μανώλης Κιαγιάς, MSc. Aiolos Project. Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI

TasPython. Εισαγωγή στο Mercurial

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Υπηρεσία διαμοιρασμού αρχείων

Προγραμματισμός Ι. Εργαστήριο 1 ο Περιβάλλον Εργασίας. Νικόλαος Δ. Τσελίκας Κυριακή Θ. Σεκλού

Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7. Οδηγίες Αναβάθμισης (Upgrade) Αθήνα, 16 Μαρτίου Εισαγωγή

Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης eclass 2.0. Οδηγίες Αναβάθµισης (Upgrade) Αθήνα, 1 Ιουνίου Εισαγωγή

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

ΠΑΓΚΑΛΟΣ ΙΩΑΝΝΗΣ ΣΙΣΜΑΝΗΣ ΝΙΚΟΣ. File Transfer Protocol

ARTius με PostgreSQL

Linux με τη χρήση κονσόλας

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795

Από τον κατάλογο Web επιλέγουμε το Page, οπότε στο κυρίως μέρος της οθόνης εμφανίζονται οι σελίδες τις οποίες έχουμε δικαίωμα να ενημερώσουμε.

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή

Εγκατάσταση Joomla 1. Στο Π.Σ.Δ. ( 2. Τοπικά 3. Σε δωρεάν Server

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΜΣ ΕΠΙΣΤΗΜΗ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ Η/Υ

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

Hase οδηγίες χρήσης.

Για περισσότερες πληροφορίες σχετικά με τη συμβατότητα του λογισμικού με άλλα λειτουργικά συστήματα, επικοινωνήστε με το τμήμα υποστήριξης πελατών.

Technical FAQ. Data Encryption: 128bit έως 256Bit με επιλογή πρωτοκόλλου (AES, Triple DES, and TwoFish). Traffic Encryption: 1024bit RCA

Hase οδηγίες χρήσης.

server : Ο υπολογιστής του καθηγητή που θέλουμε να ελέγχει τους υπόλοιπους του εργαστηρίου client : Οι υπολογιστές των μαθητών

Μεταφορά Αρχείων µε χρήση της Υπηρεσίας FTP σελ. 1

Υπηρεσία Επισημείωσης Hypothesis. Εγχειρίδιο χρήσης

Ξεκινώντας με το MIT Αρρ Inventor. 1 η Εργασία

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

ΡΥΘΜΙΣΕΙΣ ΓΙΑ ΔΥΝΑΜΙΚΟ IP

CYGWIN Οδηγίες Χρήσης (Συγγραφέας: Γιώργος ούκας)

Οδηγίες Χρήσης της MySQL

JOOMLA CMS ΒΑΣΙΚΗ ΠΑΡΑΜΕΤΡΟΠΟΙΗΣΗ (PART I)

Εικόνα 2 Αφού εισέλθετε στο σύστημα, έχετε τη δυνατότητα επιλέγοντας «Software» να αναζητήσετε το λογισμικό που σας ενδιαφέρει. Αυτό γίνεται είτε εισά

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux

BHMATA ΓΙΑ ΑΝΑΒΑΘΜΙΣΗ ΣΤΟ 3S/I.T.P.

Αραπογιάννης Β. Τεχν.ΚΕΠΛΗΝΕΤ Αγρινίου

PRISMA Win POS Sync Merge Replication

Συμβουλές Ασφαλείας. ενάντια στους ΙΟΥΣ

Εθνικό Μετσόβιο Πολυτεχνείο. Διπλωματική Εργασία

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Εργαστήριο Εγκατάσταση Ubuntu με VirtualBox Εγκατάσταση Ubuntu με Unetbootin Απομακρυσμένη πρόσβαση με Putty/WinSCP

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Οδηγίες Εγκατάστασης tube & έναρξης δοκιμαστικών μαθημάτων

MS SQL 2012 Express (Εγκατάσταση με Advanced Services)

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX

Ξεκινώντας με το MIT Αρρ Inventor. 1 η Εργασία

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ ΓΡΑΜΜΑΤΕΙΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ESCHOOL

Βήμα 1ο. Συνδεθείτε στο σύστημα διαχείρισης του Joomla ιστοχώρου σας. Η διεύθυνση θα είναι:

Android Studio για Windows

Ενημερωτικός οδηγός για τον εξυπηρετητή Ada

Git - Version Control System & GoogleCode

Μπορείτε τα δείτε βιντεάκι με τη διαδικασία εδώ:

Πώς να χρησιμοποιήσετε το Moodle

Άσκηση. Εξοικείωση με την πλατφόρμα Moodle

WORDPRESS. Εικόνα 1. Πατώντας στη «Σύνδεση» γράψτε το Username (όνομα χρήστη) και το Password (συνθηματικό) (εικόνα 2) που σας έδωσε ο διαχειριστής

Πρόσβαση μέσω webdav. ΚΕ.Δ.Δ. Τ.Ε.Ι. Μεσολογγίου. 3. Στην συνέχεια πληκτρολογούμε το username και το password και πατάμε στο κουμπί Είσοδος.

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

Οδηγίες Χρήσης EAP Controller Software

ΕΡΩΤΗΜΑΤΟΛOΓΙΟ ΣΧΟΛΕIΟΥ: ΕΓΧΕΙΡIΔΙΟ ΔΙΕΥΘΥΝΤΉ/ΝΤΡΙΑΣ. Doc.: CY7_CBA_ScQPrincipalManual.docx. Δημιουργήθηκε από: ETS, Core Α Contractor

App Inventor 3ο Μάθημα (Ζάρια - επέκταση)

Ενσωματωμένα Συστήματα

ΣΧΕΔΙΑΣΜΟΣ ΙΣΤΟΣΕΛΙΔΑΣ ΜΕ ΤΗ ΧΡΗΣΗ ΠΡΟΤΥΠΟΥ ΙΣΤΟΣΕΛΙΔΑΣ (TEMPLATE) ΣΤΟ ΠΡΟΓΡΑΜΜΑ MICROSOFT OFFICE SHAREPOINT DESIGNER 2007

ΣΧΕΔΙΑΣΜΟΣ ΙΣΤΟΣΕΛΙΔΑΣ ΜΕ ΤΗ ΧΡΗΣΗ "ΠΡΟΤΥΠΟΥ ΙΣΤΟΣΕΛΙΔΑΣ" (TEMPLATE) ΣΤΟ ΠΡΟΓΡΑΜΜΑ MICROSOFT OFFICE SHAREPOINT DESIGNER 2007

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Εδώ υπάρχει ένα παράδειγμα από ένα φανταστικό πρόγραμμα και το πακέτο του:

Εγκατάσταση του PiNet για διαχείριση εργαστηρίου με Raspberry Pi. Συγγραφέας: Τριχόπουλος Γιώργος Δεκέμβριος 2016

Ερωτήσεις και απαντήσεις για το e-tutoring 1

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ DVR KTEC

Λειτουργικά Συστήματα

Transcript:

Οδηγός για το... Git & Github

Όλα τα παρακάτω σχηματίζουν έναν βασικό οδηγό για το Git και το GitHub. Σημειώστε πως αυτός ο οδηγός δεν είναι πλήρης, ούτε παρέχει λεπτομέριες για το πως λειτουργεί το συγκεκριμένο εργαλείο. Στο τέλος, υπάρχουν χρήσιμα link που πιστεύω θα βρείτε ότι χρειάζεστε για την λειτουργία του git. Καλή ανάγνωση... Π Ε Ρ Ι Ε Χ Ο Μ Ε Ν Α 1 Εισαγωγή με το εργαλείο git 2 Εγκατάσταση του git 2.1 Εγκατάσταση σε Linux 2.2 Εγκατάσταση σε Windows 2.3 Εγκατάσταση σε Mac OS 2.4 Git Αποθετήριο 3 Βασικές εντολές 4 Ssh ρύθμιση για για συχρονισμό με το GitHub 5 Ρύθμιση του της εγκατάστασης του Git 5.1 Πληροφορίες για τον author/commiter 5.2 Χρωματισμένη έξοδος εντολών 5.3 Εγκατάσταση του gitg 6 Δημιουργία αποθετηρίων στον υπολογιστή μας 6.1 Δημιουργία κενού αποθετηρίου στον υπολογιστή μας 6.2 Δημιουργία αποθετηρίου έχοντας υλοποιημένο κάποιο project 6.3 Δημιουργία local αποθετηρίου αντιγράφοντας κάποιο απο τον Github 7 Basic Reference 7.1 Basic Snapshotting 7.2 Εντολές για Branching και Merging 7.3 About Sharing and Updating projects 7.4 Επιθεώρηση και Σύγκριση 8 Progit 9 Χρήσιμοι συνδέσμοι 10 Manpages

1. Εισαγωγή με το εργαλείο git Το git είναι ένα distributed σύστημα ελέγχου εκδόσεων κώδικα(dvcs) και σας δίνει την δυνατότητα να δουλεύετε πάνω σε ένα project και να έχετε πλήρη έλεγχο του κώδικα που αναπτύσετε χωρίς να είσαστε συνδεδεμένοι σε κάποιο δίκτυο. Η γενική ιδέα είναι οτι, μπορείτε να αναπτύσετε κώδικα σε local επίπεδο στον υπολογιστή σας και κάθε στιγμή να ανανεώνετε το public αποθετήριο ώστε να το βλέπουν οι συνεργάτες σας. 2. Εγκατάσταση του git Εγκατάσταση σε Linux Για διανομές βασισμένες σε Debian(όπως το ubuntu) sudo apt-get install git-core ενώ, για διανομές βασισμένες σε Fedora yum install git-core TIP: Με την εντολή sudo aptitude search git εμφανίζονται πακέτα που σχετίζονται με το git. Εγκατάσταση σε Windows XP/Vista/7 Η εγκατάσταση στα windows είναι πολύ εύκολη! Κατεβάστε απο τον σύνδεσμο http://code.google.com/p/msysgit το εκτελέσιμο αρχείο και τρέξτε το. Μόλις γίνει η εγκατάσταση θα πρέπει να έχετε ένα πρόγραμμα Git Bash, σαν ένα απλό κέλοφος όπου μπορείτε να εκτελείτε εντολές σχετικά με το git. Δείτε κάποιες περισσότερες πληροφορίες στο http://help.github.com/win-set-up-git/. Εγκατάσταση σε Mac OS: Όπως και στα windows έτσι και εδώ χρησιμοποιείτε το GUI installer που το κατεβάζετε μέσω του συνδέσμου http://code.google.com/p/git-osx-installer. Αν έχετε ήδη εγκατεστημένα τα MacPosts μπορείτε να το κατεβάσετε με: $ sudo port install git-core +svn +doc +bash_completion +gitweb Αποθετήριο του Git Το git είναι ένα εργαλείο όπως θα δείτε και παρακάτω που είναι υλοποιημένο σε κώδικα. Μπορέιτε να βρείτε τον κώδικα αυτό στο GitHub και να τον κλωνοποιήσετε στον υπολογιστή σας(θα δείτε παρακάτω περισσότερα για το clone) με: $ git clone git://git.kernel.org/pub/scm/git/git.git

3. Βασικές εντολές Ο λόγος που προτρέχω και γράφω τις παρακάτω εντολές είναι για όσους δεν θέλουν να διαβάσουν ολόκληρο τον οδηγό και χρειάζονται μόνο αυτές. Προφανώς αν δεν ανήκετε σε αυτή τη κατηγορία πηδήξτε την τρέχων παράγραφο. git init git pull git add <filenames> git push git clone <url> git commit -m <message> Αρχικοποίηση του τρέχων φακέλου ώς αποθετήριο Ανανέωση του public αποθετηρίου με το local Προσθήκη των αρχείων στο INDEX Συγχώνευση brances με το local Αντιγραφή public αποθετηρίου στον υπολογιστή μας Δημιουργία στιγμιοτύπου με δείκτη HEAD 4. Ssh ρύθμιση για συχρονισμό με το GitHub Για να δουλέψετε με το git και ταυτόχρονα με το github θα πρέπει να υπάρχει ένας συχρονισμός ώστε κάθε φορά που θέλετε να κάνετε push/pull κώδικα, το git να το καταλαβαίνει αυτόματα και να δρά σωστα. Αυτό που θα κάνουμε είναι να δημιουργήουμε ένα rsa κλειδί και να το μεταφέρουμε στον λογαριασμό μας στο github ώστε κάθε φορά να μπορείτε να ανεβάζετε(push) και να κατεβάζετε(pull) αρχεία χωρίς να γράφετε εντολές και κωδικούς και άλλα διάφορα. Δεν θα γίνω πολύ αναλυτικός σε αυτό το βήμα γιατί ο σκοπός του οδηγού είναι άλλος. Εκτελείτε την παρακάτω εντολή: $ ssh-keygen -t rsa και αυτόματα θα σας ζητήσει για ένα όνομα του κλειδιου. Μπορείτε να δώσετε ότι θέλετε όπως, github_key και συνεχίζετε παρακάτω όπου θα σας ζητήσει να δώσετε δυο φορές έναν κωδικό για αυτό το κλειδί. Μπορείτε να το αφήσετε και κενό αλλά καλύτερα δώστε κάποιον απλό. Μόλις γίνει η σύνδεση, δεν θα χρειαστεί να ξανα-πληκτρολογήσετε τον κωδικό. Με άλλα λόγια θα πρέπει να κάνετε restart το σύστημά σας για να σας ξανα-ζητηθεί ο κωδικός. Ωραία, το κλειδί μας ολοκληρώθηκε και θα πρέπει να έχετε δυό αρχεία τώρα με ονόματα, <όνομα_κλειδιού> και <όνομα_κλειδιού>.pub. Το πρώτο δεν θα πρέπει να το πειράξετε ούτε να το δώσετε πουθενά. Είναι καθαρά προσωπικό! Το.pub όπως καταλάβένετε είναι το public κλειδί οπότε θα πρέπει να το μεταφέρετε στον host που στην προκειμένη περίπτωση είναι το github. Οπότε, ανοίγουμε τον λογαριασμό μας στο github και πηγαίνουμε στο, "Αccount Settings/SSH keys/add SSH key". Εκεί θα πρέπει να κάνουμε copy/paste ότι ακριβώς περιέχει το <όνομα_κλειδιού>.pub αρχείο μας. Προσέξτε να μην προσθέσετε κάποιο space, enter etc. Πρέπει να είναι όπως ακριβώς φαίνεται στο αρχείο μας.

5. Ρύθμιση της εγκατάστασης του Git Το εργαλείο git θα πρέπει να δουλεύει μια χαρά τώρα! Παρακάτω θα δώσουμε κάποιες ρυθμίσεις ώστε αν τυχόν κάνετε κάποιο push/pull να ξέρει κάθε ένας στην ομάδα ποιος το έκανε. Αρχικά θα δώσετε ένα όνομα και ένα email όπως φαίνετε και παρακάτω. Έπειτα μπορείτε για να είναι πιο όμορφο να δώσετε κάποια χρώματα στις εντολές του git. Πληροφορίες για τον author/commiter git config --global user.name "type your name here" git config --global user.email Type your email here Χρωματισμένη έξοδος εντολών git config --global color.ui auto git config --global alias.st status Κάθε στιγμή μπορείτε να ενημερώνεστε για τις ρυθμίσες που έχετε δώσει εκτελώντας: git config -l Εγκατάσταση του gitg Είναι ένα εργαλείο με γραφικό περιβάλλον που προσφέρει ευκολία για να βλέπουμε τις εκδόσεις που κώδικά μας. Το αποθετήριο αναγνωρίζεται αυτόματα και θα μπορούμε να βλέπουμε λεπτομέριες για τα commit που έχουν γίνει. H εγκατάσταση γίνεται εκτελώντας: apt-get install gitg 6. Δημιουργία αποθετηρίων στον υπολογιστή μας Αποθετήριο? Για κάποιον που δεν έχει ξαναασχοληθεί με DVCS η έννοια του αποθετήριου είναι κινέζικη(τουλάχιστον έτσι ήταν για μένα στηνα αρχή :P). Αποθετήριο λοιπόν, δεν είναι τίποτα άλλο απο έναν 'φάκελο'. Μια τοποθεσία που αποθηκεύονται αρχεία. Θέλοντας να καλύψω όσες περισσότερες περιπτώσεις μπορώ θα δούμε 3 περιπτώσεις δημιουργίας αποθετηρίου. Δημιουργία κενού αποθετηρίου στον υπολογιστή μας Αρχίζουμε με το github! Ανοίγουμε την σελίδα https://github.com/ και αφού κάνουμε login στον λαγαριασμό μας, πάνω δεξιά επιλέγουμε το create new repo, δίνουμε ένα όνομα στο αποθετήριο και το δημιουργούμε. Όπως θα δείτε θα πρέπει να σας εμφανίσει τις εντολές με τις οποίες θα δουλέψετε. Το αποθετήριο έχει δημιουργηθεί μόνο στο github τώρα. Θα πρέπει να πάμε στον υπολογιστή μας και απο ένα τερματικό να δημιουργήσουμε έναν φάκελο

με όνομα το ίδιο όνομα του αποθετηρίου στο github. mkdir <όνομα αποθετηρίου> Έπειτα, αφού μπούμε στον φάκελο εκτελούμε: git init και έτσι αρχικοποιούμε τον φάκελο αυτό σε αποθετήριο! Εκτελώντας: ls -a μπορείτε να δείτε τα κρυφά αρχεία του φακέλου-αποθετηρίου. Ο.git φάκελος είναι αρχεία που χρειάζονται για το αποθετήριο. Δημιουργείται αυτόματα για κάθε ένα αποθετήριο που φτιάχνετε και περιέχει πληροφορίες για τα add και τα commit που θα δούμε παρακάτω. Δημιουργία αποθετηρίου έχοντας υλοποιημένο κάποιο project Προυπόθεση εδώ, είναι να έχουμε ήδη υλοποιημένο κάποιο project τοποθετημένο σε κάποιον φάκελο. Γιατί να κάνουμε local αποθετήριο; Γιατί μπορεί να θέλουμε να δουλέψουμε κι άλλο πάνω σε αυτό το project και να βγάλουμε ένα version 2 με κάποιον συνεργάτη. Αφού πάμε πάλι στο github και κάνουμε την γνωστή διαδικασία στον φάκελο απλά εκτελούμε: git init αρχικοποιείται όπως και παραπάνω σε αποθετήριο και είμαστε έτοιμοι! Δημιουργία local αποθετηρίου αντιγράφοντας κάποιο απο τον Github Σε αυτή τη περίπτωση, υπάρχει κάποιο αποθετήριο στο github που μας ενδιαφέρει(είτε είναι δικό μας είτε όχι). Αν δεν είναι δικό μας θα πρέπει να είναι public για να συνεχίσουμε. Θέλουμε λοιπόν, να το κάνουμε clone στον υπολογιστή μας και να επεξεργαστούμε τον κώδικα χωρίς να έχει επίπτωση στο σημείο απο όπου τον πήραμε, χωρίς να επηρεάσει τον προγραμματιστή δηλαδή. Για να αντιγράψουμε το project απο το github στον local δίσκο μας εκτελούμε: $git clone <url> myproject το <url> αναγράφεται πάνω πάνω στον λογαριασμό μας στο github. Δεν είναι το URL πλοήγησης του browser!

7. Basic Reference Έχουμε ένα αποθετήριο έτοιμο για χρήση και κάποια προγράμματα ίσως. Θέλουμε να δουλέψουμε πάνω στο αποθετήριο αυτό χρησιμοποιώνας το git φυσικά. Οι παρακάτω εντολές προφανώς δεν αναλύονται αρκετά καθώς είναι βασισμένες στα manpages αλλα μπορείτε να πάρετε μια ιδέα τι κάνει κάθε μια και να τις έχετε στο μυαλό σας. Εδώ μπορείτε να βρείτε τις πιο ένα pdf με τις πιο βασικές εντολές. Είναι πολύ χρήσιμο αν εκτυπωθεί! :) Basic Snapshotting Οι παρακάτω εντολές μας βοηθάνε ώστε να δουλεύουμε με στιγμιότυπα. Ανατρέξτε στη progit παράγραφο για περισσότερα. add status diff commit reset rm mv git-add Περιγραφή: Προσθέτει το περιεχόμενο του αρχείου στο index και το ετοιμάζει για να γίνει το επόμενο commit. Έχοντας αυτό τον χώρο που ονομάζεται index μπορείτε κάθε στιμγή να κάνετε commit. Με το commit στην ουσία, αποθηκεύονται όλα τα περιεχόμενα του INDEX με ένα log message κάπου αλλού. Απο εκεί και πέρα μπορούμε να έχουμε πολλά commit και πάντα ένα INDEX όπως είναι προφανές. git-status Περιγραφή: Εμφανίζει την κατάσταση του Working tree δηλαδή, μονοπάτια που έχουν διαφορά στο index και στο τρέχων HEAD commit. Τα πρώτα αρχεία μπορέιτε να τα κάνετε commit. Τα τρίτα και τέταρτα μπορείτε να τα κάνετε commit αφού γίνει πρώτα add. git-diff Περιγραφή: Εμφανίζει διαφορές στα commit που έχουν γίνει και στο working tree με τα index. git-commit Περιγραφή: Καταγράφει αλλαγές που έχουν γίνει στο αποθετήριο. Αποθηκεύει ότι υπάρχει στο index σε ένα νέο commit μαζί με ένα μήνυμα περιγραφής που δίνεται απο τον χρήστη.

git-reset Περιγραφή: Κάνει επαναφορά στην τρέχων κεφαλής(head) σε ένα συγκεκριμένο σημείο. git-rm Περιγραφή: Απομακρύνει αρχεία απο το working tree και το index. Σημειώστε ότι με git-rm δεν απομακρύνεται κάποιο αρχείο αλλα το working directory git-mv Περιγραφή: Μετακινεί η κάνει μετονομασία σε κάποιο αρχείο, φάκελο ή σύνδεσμο Branching and merging Οι εντολές εδώ σχετίζονται με τους κλάδους, τις εκδόσεις του project μας και τον κατάληλο χειρισμό τους. branch checkout merge log stash tag git-branch Περιγραφή: Εμφανίζει σε λίστα ή δημιουργεί τα branches που υπάρχουν. git-merge Περιγραφή: Ενώνει δύο η περισότερους κλάδους μαζί. Για παράδειγμα τον master που πιθανώς έχετε μέ κάποιον δέύτερο που δημιουργήσατε. git-log Περιγραφή: Εμφανίζει πληροφορίες για τα commit που έχουν γίνει. Sharing and Update projects Οι παρακάτω αντολές σχετίζονται με τον διαμοιρασμό των projects. Για παράδειγμα το upload και download των δικών σας project σε κάποιο αποθετήριο. fetch pull push remote

git-fetch Περιγραφή: Μας φέρνει-κατεβάζει αντικείμενα απο κάποιο άλλο αποθετήριο. git-pull Περιγραφή: Φέρνουμε στον υπολογιστή μας κάποιο άλλο αποθετήριο ή τοπικό κλάδο(branch). πχ. git pull --rebase Με το rebase ζητάμε από το git να τροποποιήσει το τοπικό μας αποθετήριο και να κάνει αυτά τα commit που δεν υπάρχουν ακόμα στο δημόσιο αποθετήριο, να εμφανιστούν με τέτοιο τρόπο ώστε να περάσουν πρώτα στο ιστορικό (του τοπικού αποθετηρίου) τα commit που υπήρχαν στο δημόσιο αποθετήριο, και τα commit του τοπικού να εμφανιστούν πιο πρόσφατα στο ιστορικό. Αυτό ονομάζεται rebase. git-push Περιγραφή: Ανανεώνουμε κάποιο public αποθετήριο. πχ. git push -u origin master git-remote Περιγραφή: Διαχείριση αποθετηρίων στα οποία κάποιο απο τα branches είναι σε trackign mode. πχ. git remote add origin git@github.com:penlix/test_fileee.git Επιθεώρηση και σύγκριση Τα παρακάτω σχετίζονται με την σύγκριση εκδόσεων κώδικα που έχουμε υλοποιήσει και την εμφάνιση τυχόν log files. log diff reset git-log Περιγραφή: εμφανίζει πληροφορίες για τα commits που έχουν γίνει git-diff Περιγραφή: Εμφανίζει τις διαφορές στον κώδικα μεταξύ των commit και των branches. git-reset --hard Περιγραφή: Επαναφορά του αποθετηρίου στην κατάσταση του τελευταίου commit

8. ProGit Στο τοπικό αποθετήριο πάντα υπάρχει ένας κρυφός φάκελος.git όπου περιέχει αρχεία χρήσιμα για το αποθετήριο: test/.git$ ls branches COMMIT_EDITMSG config description HEAD hooks index info logs objects refs COMMIT_EDITMSG : περιέχει το σχόλιο όταν κάναμε το commit config : περιέχει πληροφορίες για τον χρήστη και τα remote add <name> που κάναμε description : περιέχει την περιγραφή του αποθετηρίου(αν δώσαμε) HEAD : μας δείχνει που ακριβώς γίνονται τα commits(path) index : ίσως είναι και το πιο σημαντικό. Είναι ένα αρχείο το οποίο μεγαλώνει καθώς κάνουμε git add κάποιο άλλο αρχείο. Φανταστείτε το σαν έναν buffer που μόλις κάνουμε commit αδειάζει. Είναι σημαντικό να έχετε στο μυαλό σας τα 3 δέντρα/ρόλοι όπως λέγονται. Συνοπτικά οι 3 ρόλοι είναι: The HEAD τελευταίο commit που έγινε, επόμενος πατέρας The Ιndex πιθανώς το επόμενο commit που θα γίνει The Working Directory sandbox Μόνο και μόνο με αυτά τα τρία είμαι σίγουρος πως θα ξεκαθαρίσουν πολλά τοπία! The HEAD Σε γενικές γραμμές είναι ένας pointer στο τρέχων branch. Αυτό σημαίνει οτι θα είναι ο πατέρας αν γίνει ένα commit. Για να μην μπερδεύεστε απλά σκεφτείτε πως είναι ένα στιγμιότυπο απο το τελευταίο σας commit. Τι περιέχει το commit? Τα αρχεία που είχατε κάνει add. $ cat.git/head ref: refs/heads/master $ cat.git/refs/heads/master e9a570524b63d2a2b3a7c3325acf5b89bbeb131e $ git cat-file -p e9a570524b63d2a2b3a7c3325acf5b89bbeb131e tree cfda3bf379e4f8dba8717dee55aab78aef7f4daf author Scott Chacon 1301511835-0700 committer Scott Chacon 1301511835-0700

initial commit $ git ls-tree -r cfda3bf379e4f8dba8717dee55aab78aef7f4daf 100644 blob a906cb2a4a904a152... README 100644 blob 8f94139338f9404f2... Rakefile 040000 tree 99f1a6d12cb4b6f19... lib The Index Όταν δουλεύετε με αρχεία και έχετε κάνει κάποιες αλλαγές κάποια στιγμή θα γίνει ένα commit έτσι ώστε να ενημερωθεί η "βάση μας". Το Index είναι ένα στιγμιότυπο απο το επόμενο commit που προόκειται να γίνει. Σημειώστε πως όταν εκτελείτε git commit το commit κοιτά μόνο στο Index για τυχόν αλλαγές(έτσι είναι το default τουλάχιστον). $ git ls-files -s 100644 a906cb2a4a904a152e80877d4088654daad0c859 0 README 100644 8f94139338f9404f26296befa88755fc2598c289 0 Rakefile 100644 47c6340d6459e05787f644c2447d2595f5d3a54b 0 lib/simplegit.rb The Working Directory Το directory αυτό δεν είναι τίποτα άλλο απο τον φάκελο με όλα τα αρχεία σας μέσα. Ο χώρος στο local σύστημά σας που μπορείτε εύκολα να κάνετε modify κάποια αρχεία. Δείτε και την παρακάτω εικόνα. $ tree. README Rakefile lib simplegit.rb 1 directory, 3 files Ρίξτε μια ματιά στην επόμενη σελίδα και θα δείτε σε γενικές γραμμές όλα τα δέντρα που έχετε στην διάθεσή σας. Προφανώς για μια βασική χρήση του git δεν είναι απαραίτητα αλλα όποιος θέλει να το μάθει εκτενές μπορεί να ακολουθήσει τον σύνδεσμο: http://gitscm.com/about

Για περισσότερες πληροφορίες δείτε εδώ: http://ndpsoftware.com/git-cheatsheet.html

9. Χρήσιμοι συνδέσμοι Κεντρική σελίδα του github: https://github.com/ Βοήθεια για το github: http://help.github.com/ From wikipedia: http://en.wikipedia.org/wiki/github GitSvncrashcourse: https://git.wiki.kernel.org/articles/g/i/t/gitsvncrashcourse_512d.html Git Reference: http://gitref.org/basic/#add Οδηγός του φόρουμ: https://forum.ubuntu-gr.org/viewtopic.php?f=9&t=19319 http://help.github.com/git-cheat-sheets/ http://www.vogella.com/articles/git/article.html http://www.siteground.com/tutorials/git/commands.htm http://davidwalsh.name/git-commands http://gitref.org/basic/#add 10. Manpages Το git δεν είναι τίποτα άλλο απο ένα κέλυφος με κάποιες ειδικές εντολές. Μπορείτε και εδώ να χρησιμοποιήσετε τα manpages όπως και στο Linux και να δείτε περισσότερες πληροφορίες για κάποια εντολή του git εκτελώντας: git help <εντολή> Ο παραπάνω οδηγός υπάγεται στην άδεια, CC BY 3.0