You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: book/01-introduction/sections/about-version-control.asc
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,9 @@
5
5
Ο __έλεγχος εκδόσεων__ είναι ένα σύστημα το οποίο καταγράφει αλλαγές σε ένα αρχείο ή σε ένα σύνολο αρχείων έτσι ώστε να μπορούμε να ανακαλέσουμε συγκεκριμένες εκδόσεις.
6
6
Στα παραδείγματα του βιβλίου, τα αρχεία που θα χρησιμοποιήσουμε για έλεγχο εκδόσεων θα είναι αρχεία πηγαίου κώδικα λογισμικού αν και στην πραγματικότητα, θα μπορούσαμε να χρησιμοποιήσουμε αρχεία οποιουδήποτε τύπου.
7
7
8
-
Αν είμαστε γραφίστες ή σχεδιαστές ιστοσελίδων και θέλουμε να κρατήσουμε κάθε έκδοση μιας εικόνας ή μιας διάταξης (κάτι το οποίο είναι πολύ πιθανό) τότε ένα Σύστημα Ελέγχου Εκδόσεων (Version Control System -- VCS) είναι μια πολύ σοφή επιλογή. Ένα τέτοιο σύστημα μάς επιτρέπει να επαναφέρουμε συγκεκριμένα αρχεία σε κάποια προγενέστερη κατάσταση, να επαναφέρουμε ακόμα και ολόκληρο έργο (project) σε προγενέστερη κατάσταση, να συγκρίνουμε αλλαγές με την πάροδο του χρόνου, να δούμε ποιος τροποποίησε τελευταίος κάτι που ενδεχομένως δημιουργεί κάποιο πρόβλημα, ποιος έθεσε ένα ζήτημα και άλλα πολλά. Η χρήση ενός συστήματος ελέγχου εκδόσεων σημαίνει επίσης ότι αν τα κάνουμε θάλασσα ή χάσουμε αρχεία, είναι εύκολο να τα ανακτήσουμε. Επιπλέον, όλες αυτές οι δυνατότητες προσφέρονται με πολύ μικρή επιβάρυνση.
8
+
Αν είμαστε γραφίστες ή σχεδιαστές ιστοσελίδων και θέλουμε να κρατήσουμε κάθε έκδοση μιας εικόνας ή μιας διάταξης (κάτι το οποίο είναι πολύ πιθανό) τότε ένα Σύστημα Ελέγχου Εκδόσεων (Version Control System --VCS) είναι μια πολύ σοφή επιλογή.
9
+
Ένα τέτοιο σύστημα μάς επιτρέπει να επαναφέρουμε συγκεκριμένα αρχεία σε κάποια προγενέστερη κατάσταση, να επαναφέρουμε ακόμα και ολόκληρο έργο (project) σε προγενέστερη κατάσταση, να συγκρίνουμε αλλαγές με την πάροδο του χρόνου, να δούμε ποιος τροποποίησε τελευταίος κάτι που ενδεχομένως δημιουργεί κάποιο πρόβλημα, ποιος έθεσε ένα ζήτημα και άλλα πολλά.
10
+
Η χρήση ενός συστήματος ελέγχου εκδόσεων σημαίνει επίσης ότι αν τα κάνουμε θάλασσα ή χάσουμε αρχεία, είναι εύκολο να τα ανακτήσουμε. Επιπλέον, όλες αυτές οι δυνατότητες προσφέρονται με πολύ μικρή επιβάρυνση.
Το πιο προφανές είναι το γεγονός ότι μια βλάβη στον κεντρικό διακομιστή προκαλεί την αποτυχία όλου του συστήματος.
40
42
Αν ο διακομιστής πέσει για μία ώρα, τότε κατά τη διάρκεια αυτής της ώρας κανείς δεν μπορεί να συνεργαστεί ή να αποθηκεύσει αλλαγές στο σύστημα ελέγχου εκδόσεων.
41
43
Αν για παράδειγμα ο σκληρός δίσκος πάνω στον οποίο βρίσκεται η κεντρική βάση δεδομένων καταστραφεί και δεν έχουν κρατηθεί τα απαραίτητα αντίγραφα ασφαλείας τότε χάνονται τα πάντα. Ολόκληρο το ιστορικό του έργου χάνεται εκτός από στιγμιότυπα του έργου που μπορεί να έχουν κρατήσει στους υπολογιστές τους κάποιοι προγραμματιστές.
42
-
Τα τοπικά συστήματα ελέγχου εκδόσεων πάσχουν από το ίδιο πρόβλημα -- όταν το ιστορικό ενός έργου βρίσκεται σε ένα και μοναδικό μέρος τότε υπάρχει ο κίνδυνος να χαθούν τα πάντα.
44
+
Τα τοπικά συστήματα ελέγχου εκδόσεων πάσχουν από το ίδιο πρόβλημα —όταν το ιστορικό ενός έργου βρίσκεται σε ένα και μοναδικό μέρος τότε υπάρχει ο κίνδυνος να χαθούν τα πάντα.
Copy file name to clipboardExpand all lines: book/01-introduction/sections/basics.asc
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,13 +34,13 @@ image::images/snapshots.png[Το Git αποθηκεύει τα δεδομένα
34
34
Αν είμαστε συνηθισμένοι σε ένα συγκεντρωτικό σύστημα ελέγχου εκδόσεων όπου οι περισσότερες λειτουργίες έχουν καθυστέρηση εξαιτίας του δικτύου, τότε αυτή η πλευρά του Git θα μας κάνει να νομίζουμε ότι οι θεοί της ταχύτητας ευλόγησαν το Git με υπερκόσμιες δυνάμεις.
35
35
Οι περισσότερες λειτουργίες στο Git φαίνονται σχεδόν στιγμιαίες, κυρίως λόγω του γεγονότος ότι το πλήρες ιστορικό του έργου βρίσκεται στον τοπικό δίσκο.
36
36
37
-
Για παράδειγμα, για να περιηγηθούμε στο ιστορικό του έργου μας, το Git δεν χρειάζεται να λάβει το ιστορικό από τον διακομιστή και να το εμφανίσει στον χρήστη -- χρειάζεται απλά να το διαβάσει από την τοπική βάση δεδομένων.
37
+
Για παράδειγμα, για να περιηγηθούμε στο ιστορικό του έργου μας, το Git δεν χρειάζεται να λάβει το ιστορικό από τον διακομιστή και να το εμφανίσει στον χρήστη —χρειάζεται απλά να το διαβάσει από την τοπική βάση δεδομένων.
38
38
Αυτό σημαίνει ότι μπορούμε να δούμε το ιστορικό του έργου μας άμεσα.
39
39
Αν θέλουμε να δούμε τις αλλαγές που εισήχθησαν ανάμεσα στην τρέχουσα έκδοση ενός αρχείου και στην έκδοσή τους πριν ένα μήνα, ένα σύστημα ελέγχου εκδόσεων μπορεί να ρωτήσει τον διακομιστή για τις διαφορές των δύο αρχείων ή να έλξει την παλιά έκδοση του αρχείου και να υπολογίσει τις διαφορές τοπικά. Αντί αυτού, το Git μπορεί επί τόπου τοπικά και να αναζητήσει το αρχείο ένα μήνα πριν και να κάνει τον υπολογισμό των διαφορών τους.
40
40
41
41
Αυτό επίσης σημαίνει ότι είναι πολύ λίγες οι λειτουργίες που δεν μπορούμε να κάνουμε όταν είμαστε εκτός δικτύου.
42
42
Αν βρισκόμαστε σε ένα αεροπλάνο ή στο τρένο και θέλουμε να εργαστούμε, μπορούμε να υποβάλλουμε τις αλλαγές μας χωρίς πρόβλημα, και να τις μεταφορτώσουμε όταν επανέλθει η σύνδεση δικτύου.
43
-
Αν είμαστε στο σπίτι και δεν μπορούμε να συνδεθούμε μέσω του πελάτη (client) του εικονικού τοπικού μας δικτύου (Virtual Private Network, VPN), μπορούμε ακόμα να εργαστούμε.
43
+
Αν είμαστε στο σπίτι και δεν μπορούμε να συνδεθούμε μέσω του πελάτη (client) του εικονικού τοπικού μας δικτύου (Virtual Private Network —VPN), μπορούμε ακόμα να εργαστούμε.
44
44
Σε πολλά άλλα συστήματα, οι παραπάνω λειτουργίες είναι είτε αδύνατες είτε επίπονες.
45
45
Στο Perforce, για παράδειγμα, πολλές λειτουργίες δεν είναι δυνατό να πραγματοποιηθούν, αν δεν υπάρχει σύνδεση με τον διακομιστή. Στο Subversion και στο CVS είναι δυνατό να γίνει επεξεργασία των αρχείων, αλλά δεν είναι δυνατό υποβληθούν οι αλλαγές στη βάση δεδομένων εφόσον βρίσκεται εκτός σύνδεσης.
46
46
Τα παραπάνω μπορεί να μην φαίνονται πολύ σημαντικά, αλλά κάποιος που έχει δουλέψει με το Subversion ή το CVS ενδεχομένως θα εντυπωσιαστεί από το πόσο μεγάλη διαφορά μπορεί να κάνουν.
Copy file name to clipboardExpand all lines: book/01-introduction/sections/command-line.asc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
Υπάρχουν πολλοί διαφορετικοί τρόποι με τους οποίους μπορεί κανείς να χρησιμοποιήσει το Git.
4
4
Υπάρχουν τα αρχικά εργαλεία στη γραμμή εντολών αλλά και διάφορα γραφικά εργαλεία με ποικίλες δυνατότητες.
5
5
Στο βιβλίο αυτό θα χρησιμοποιήσουμε το Git μέσα από την γραμμή εντολών.
6
-
Καταρχάς, η γραμμή εντολών είναι το μόνο εργαλείο στο οποίο μπορεί κανείς να τρέξει *όλες* τις εντολές του Git --για λόγους απλότητας τα περισσότερα από τα γραφικά εργαλεία υλοποιούν μόνο ένα υποσύνολο των λειτουργιών του Git.
6
+
Καταρχάς, η γραμμή εντολών είναι το μόνο εργαλείο στο οποίο μπορεί κανείς να τρέξει *όλες* τις εντολές του Git —για λόγους απλότητας τα περισσότερα από τα γραφικά εργαλεία υλοποιούν μόνο ένα υποσύνολο των λειτουργιών του Git.
7
7
Αν γνωρίζουμε πώς να χρησιμοποιούμε το Git από την γραμμή εντολών, τότε θα μπορέσουμε να καταλάβουμε και πώς να χρησιμοποιήσουμε τα γραφικά εργαλεία. Όμως το αντίστροφο δεν ισχύει πάντα.
8
8
Επίσης, ενώ η επιλογή ενός γραφικού προγράμματος είναι θέμα προσωπικού γούστου, _όλοι_ οι χρήστες θα έχουν τα εργαλεία γραμμής εντολών εγκατεστημένα και διαθέσιμα.
Αν θέλουμε να αποκτήσουμε ένα αντίγραφο ενός υπάρχοντος αποθετηρίου Git --για παράδειγμα, ένα έργο στο οποίο θα θέλαμε να συνεισφέρουμε-- η εντολή που χρειαζόμαστε είναι `git clone`.
37
+
Αν θέλουμε να αποκτήσουμε ένα αντίγραφο ενός υπάρχοντος αποθετηρίου Git —για παράδειγμα, ένα έργο στο οποίο θα θέλαμε να συνεισφέρουμε— η εντολή που χρειαζόμαστε είναι `git clone`.
38
38
Αν είμαστε εξεικοιωμένοι με άλλα συστήματα ελέγχου έκδοσης όπως το Subversion, θα παρατηρήσουμε ότι η εντολή είναι "clone" και όχι "checkout".
39
39
Αυτή είναι μια σημαντική διάκριση· το Git παίρνει ένα πλήρες αντίγραφο σχεδόν όλων των δεδομένων που έχει ο διακομιστής αντί για ένα απλό αντίγραφο.
40
40
Με την εντολή `git clone` όλες οι εκδόσεις του κάθε αρχείου του έργου αποθηκεύονται τοπικά.
Copy file name to clipboardExpand all lines: book/02-git-basics/sections/recording-changes.asc
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -354,7 +354,7 @@ index 643e24f..87f08c8 100644
354
354
+# test line
355
355
----
356
356
357
-
καθώς και την εντολή `git diff --cached` για να δούμε τι έχει καταχωρηθεί μέχρι τώρα (τα --staged και --cached είναι συνώνυμα):
357
+
καθώς και την εντολή `git diff --cached` για να δούμε τι έχει καταχωρηθεί μέχρι τώρα (τα `--staged` και `--cached` είναι συνώνυμα):
358
358
359
359
[source,console]
360
360
----
@@ -544,7 +544,7 @@ $ git rm \*~
544
544
(((files, moving)))
545
545
Σε αντίθεση με άλλα συστήματα ελέγχου έκδοσης, το Git δεν παρακολουθεί τις μετακινήσεις αρχείων από μόνο του.
546
546
Αν μετονομάσουμε ένα αρχείο στο Git, δεν θα αποθηκευτεί καμιά πληροφορία που να ενημερώνει το Git ότι μετονομάσαμε το αρχείο.
547
-
Παρόλα αυτά, το Git είναι αρκετά έξυπνο ώστε να καταλάβει κάτι τέτοιο --θα ασχοληθούμε λίγο αργότερα με το πώς παρακολουθείται η μετακίνηση αρχείων.
547
+
Παρόλα αυτά, το Git είναι αρκετά έξυπνο ώστε να καταλάβει κάτι τέτοιο —θα ασχοληθούμε λίγο αργότερα με το πώς παρακολουθείται η μετακίνηση αρχείων.
548
548
549
549
Έτσι, είναι λίγο περίπλοκο το γεγονός ότι το Git έχει την εντολή `mv`.
550
550
Αν θέλουμε να μετονομάσουμε ένα αρχείο στο Git, μπορούμε να το κάνουμε κάπως έτσι
@@ -578,5 +578,5 @@ $ git add README
578
578
----
579
579
580
580
Το Git μπορεί να καταλάβει ότι έμμεσα πρόκειται για μετονομασία. Συνεπώς, δεν έχει σημασία αν μετονομάσουμε ένα αρχείο με αυτόν τον τρόπο ή με την εντολή `mv`.
581
-
Η μόνη πραγματική αλλαγή είναι ότι η εντολή `mv` είναι μία εντολή αντί για τρεις --το χρησιμοποιούμε για ευκολία.
581
+
Η μόνη πραγματική αλλαγή είναι ότι η εντολή `mv` είναι μία εντολή αντί για τρεις —το χρησιμοποιούμε για ευκολία.
582
582
Σε κάθε περίπτωση, μπορούμε να χρησιμοποιήσουμε όποιο εργαλείο θέλουμε για να μετονομάσουμε ένα αρχείο, και να λύσουμε το πρόβλημα του add/rm αργότερα, πριν την υποβολή.
0 commit comments