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
Τώρα που έχουμε ορίσει την ταυτότητά μας, μπορούμε να καθορίσουμε τον επεξεργαστή κειμένου που θα χρησιμοποιούμε όταν το Git μας ζητάει να επεξεργαστούμε κάποιο κείμενο.
40
+
Τώρα που έχουμε ορίσει την ταυτότητά μας, μπορούμε να καθορίσουμε τον επεξεργαστή κειμένου που θα χρησιμοποιούμε όταν το Git μάς ζητάει να επεξεργαστούμε κάποιο κείμενο.
41
41
Αν δεν τον ρυθμίσουμε, το Git θα χρησιμοποιήσει τον προεπιλεγμένο επεξεργαστή κειμένου του συστήματός μας, π.χ. τον Vim.
42
42
Αν θέλουμε να χρησιμοποιήσουμε έναν διαφορετικό επεξεργαστή κειμένου, όπως τον Emacs, μπορούμε να εκτελέσουμε την εντολή:
Το Git έχει διάφορα πρωτόκολλα μεταφοράς που μπορούμε να χρησιμοποιήσουμε.
63
63
Το προηγούμενο παράδειγμα χρησιμοποεί το πρωτόκολλο `https://`, ενδέχεται επίσης να δούμε το `git://` ή το `user@server:path/to/repo.git` το οποίο χρησιμοποιεί το πρωτόκολλο μεταφοράς SSH.
64
-
Στο κεφάλαιο <<_git_on_the_server>> θα μας παρουσιαστούν όλες οι διαθέσιμες εναλλακτικές που μπορεί να χρησιμοποιήσει ο διακομιστής ώστε να αποκτήσει πρόσβαση στο αποθετήριο Git μας, καθώς και τα πλεονεκτήματα και μειονεκτήματα της κάθε εναλλακτικής.
64
+
Στο κεφάλαιο <<_git_on_the_server>> θα μας παρουσιαστούν όλες οι διαθέσιμες εναλλακτικές που μπορεί να χρησιμοποιήσει ο διακομιστής ώστε να αποκτήσει πρόσβαση στο αποθετήριό μας, καθώς και τα πλεονεκτήματα και μειονεκτήματα της κάθε εναλλακτικής.
Αυτό μας βοηθάει ώστε να πάρουμε τις αλλαγές και τις συνεισφορές των άλλων χρηστών αρκετά εύκολα.
60
-
Επιπλέον μπορούμε, αν έχουμε τη εξουσιοδότηση, να ωθήσουμε αλλαγές σε αυτά. Η εντολή αυτή δεν μας δίνει πληροφορίες για το αν έχουμε την εξουσιοδότηση αυτή.
60
+
Επιπλέον μπορούμε, αν έχουμε την εξουσιοδότηση, να ωθήσουμε αλλαγές σε αυτά. Η εντολή αυτή δεν μας δίνει πληροφορίες για το αν έχουμε την εξουσιοδότηση αυτή.
61
61
62
62
Ας σημειωθεί ότι τα απομακρυσμένα αποθετήρια χρησιμοποιούν μια πληθώρα από πρωτόκολλα. Θα καλύψουμε αναλυτικά τα πρωτόκολλα αυτά στο κεφάλαιο <<_git_on_the_server>>.
Copy file name to clipboardExpand all lines: book/03-git-branching/sections/nutshell.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
@@ -20,7 +20,7 @@ $ git commit -m 'The initial commit of my project'
20
20
Όταν επιτελούμε την υποβολή, τρέχοντας την εντολή `git commit`, το Git υπολογίζει ένα άθροισμα ελέγχου για καθέναν υποκατάλογο (στη συγκεκριμένη περίπτωση μόνο για τον βασικό κατάλογο του έργου) και αποθηκεύει αυτά τα αντικείμενα δενδροειδούς δομής στο αποθετήριο Git.
21
21
Στη συνέχεια το Git δημιουργεί ένα αντικείμενο υποβολής που περιέχει τα μεταδεδομένα και έναν δείκτη στη βάση του δένδρου του έργου, ώστε να μπορεί να επαναδημιουργήσει το στιγμιότυπο, όταν χρειαστεί.(((εντολές git, commit)))
22
22
23
-
Σε αυτό το στάδιο, το αποθετήριό Git μας περιέχει πέντε αντικείμενα: τρία blob για τα περιεχόμενα των αρχείων (ένα blob για κάθε αρχείο), μία δενδροειδή δομή που καταγράφει τα περιεχόμενα του καταλόγου και προσδιορίζει ποιο αρχείο αντιστοιχίζεται σε ποιο blob και ένα αντικείμενο commit που περιέχει τον δείκτη στον βασικό κατάλογο και όλα τα μεταδεδομένα της υποβολής.
23
+
Σε αυτό το στάδιο, το αποθετήριό μας περιέχει πέντε αντικείμενα: τρία blob για τα περιεχόμενα των αρχείων (ένα blob για κάθε αρχείο), μία δενδροειδή δομή που καταγράφει τα περιεχόμενα του καταλόγου και προσδιορίζει ποιο αρχείο αντιστοιχίζεται σε ποιο blob και ένα αντικείμενο commit που περιέχει τον δείκτη στον βασικό κατάλογο και όλα τα μεταδεδομένα της υποβολής.
24
24
25
25
.Μία υποβολή και το δενδροδιάγραμμά της.
26
26
image::images/commit-and-tree.png[Μία υποβολή και το δενδροδιάγραμμά της.]
@@ -146,8 +146,8 @@ $ git commit -a -m 'made other changes'
146
146
----
147
147
148
148
Τώρα το ιστορικό του έργου έχει αποκλίνει (βλ. <<divergent_history>>).
149
-
Δημιουργήσαμε ένα κλάδο, μεταβήκαμε σε αυτόν, κάναμε κάποιες αλλαγές και μετά επιστρέψαμε στον κλάδο `main' και κάναμε κάποιες άλλες αλλαγές.
150
-
Οι αλλαγές αυτές είναι απομονωμένες σε διαφορετικούς κλάδους: μπορούμε να μεταπηδούμε από τον ένα κλάδο στον άλλο και να τους συγχωνεύσουμε όταν είμαστε έτοιμοι να κάνουμε κάτι τέτοιο.
149
+
Δημιουργήσαμε έναν κλάδο, μεταβήκαμε σε αυτόν, κάναμε κάποιες αλλαγές και μετά επιστρέψαμε στον κλάδο `main' και κάναμε κάποιες άλλες αλλαγές.
150
+
Οι αλλαγές αυτές είναι απομονωμένες σε διαφορετικούς κλάδους: μπορούμε να μεταπηδούμε από τον έναν κλάδο στον άλλο και να τους συγχωνεύσουμε όταν είμαστε έτοιμοι να κάνουμε κάτι τέτοιο.
151
151
Και όλα αυτά τα καταφέρνουμε με απλές εντολές `branch`, `checkout` και `commit`.
Copy file name to clipboardExpand all lines: book/03-git-branching/sections/rebasing.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
@@ -20,7 +20,7 @@ image::images/basic-rebase-2.png[Συγχώνευση και ενσωμάτωσ
20
20
21
21
Ωστόσο, υπάρχει κι ένας άλλος τρόπος: μπορούμε να πάρουμε μόνον το επίθεμα κώδικα των αλλαγών που εισήχθησαν με την υποβολή `C4` και να τις εφαρμόσουμε (επανατοποθετήσουμε) ξανά στο στιγμιότυπο `C3`.
22
22
Στο Git, αυτό ονομάζεται _επανατοποθέτηση_ (rebasing).
23
-
Με την εντολή `rebase` μπορούμε να πάρουμε όλες τις αλλαγές που υποβλήθηκαν σε ένα κλάδο και να τις επαναλάβουμε σε έναν άλλο.(((εντολές git, rebase)))
23
+
Με την εντολή `rebase` μπορούμε να πάρουμε όλες τις αλλαγές που υποβλήθηκαν σε έναν κλάδο και να τις επαναλάβουμε σε έναν άλλο.(((εντολές git, rebase)))
Copy file name to clipboardExpand all lines: book/03-git-branching/sections/remote-branches.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
@@ -136,7 +136,7 @@ Switched to a new branch 'serverfix'
136
136
Όταν κλωνοποιούμε ένα αποθετήριο, αυτό δημιουργεί αυτόματα έναν κλάδο `master` που παρακολουθεί τον κλάδο `origin/master`.
137
137
Όμως μπορούμε να ορίσουμε και άλλους κλάδους παρακολούθησης, αν θέλουμε -- κλάδους που παρακολουθούν κλάδους σε άλλα απομακρυσμένα αποθετήρια ή δεν παρακολουθούν τον κλάδο `master`.
138
138
Η πιο απλή περίπτωση είναι αυτή που μόλις είδαμε, η εντολή `git checkout -b <κλάδος> <απομακρυσμένο_αποθετήριο>/<κλάδος>`.
139
-
Αυτή η περίπτωση είναι τόσο συνηθισμένη που το Git μας παρέχει την επιλογή `--track`:
139
+
Αυτή η περίπτωση είναι τόσο συνηθισμένη που το Git μάς παρέχει την επιλογή `--track`:
140
140
141
141
[source,console]
142
142
----
@@ -145,7 +145,7 @@ Branch serverfix set up to track remote branch serverfix from origin.
145
145
Switched to a new branch 'serverfix'
146
146
----
147
147
148
-
Για την ακρίβεια είναι τόσο συνηθισμένη που υπάρχει συντόμευση για την παραπάνω επιλογή. Αν το όνομα του κλάδου στον οποίο προσπαθούμε να μεταβούμε (α) δεν υπάρχει και (β) έχει ακριβώς το ίδιο όνομα με έναν απομακρυσμένο, το Git θα δημιουργήσει αυτόματα ένα κλάδο παρακολούθησης.
148
+
Για την ακρίβεια είναι τόσο συνηθισμένη που υπάρχει συντόμευση για την παραπάνω επιλογή. Αν το όνομα του κλάδου στον οποίο προσπαθούμε να μεταβούμε (α) δεν υπάρχει και (β) έχει ακριβώς το ίδιο όνομα με έναν απομακρυσμένο, το Git θα δημιουργήσει αυτόματα έναν κλάδο παρακολούθησης.
==== Τοποθέτηση του γυμνού αποθετηρίου σε έναν διακομιστή
39
39
40
-
Τώρα που έχουμε ένα γυμνό αντίγραφο του αποθετηρίου μας, το μόνο που χρειάζεται να κάνουμε είναι να το βάλουμε σε ένα διακομιστή και να ρυθμίσουμε τα πρωτόκολλά μας.
40
+
Τώρα που έχουμε ένα γυμνό αντίγραφο του αποθετηρίου μας, το μόνο που χρειάζεται να κάνουμε είναι να το βάλουμε σε έναν διακομιστή και να ρυθμίσουμε τα πρωτόκολλά μας.
41
41
Ας υποθέσουμε ότι έχουμε δημιουργήσει έναν διακομιστή που ονομάζεται `git.example.com` στον οποίο έχουμε πρόσβαση μέσω SSH και θέλουμε να αποθηκεύσουμε όλα τα αποθετήρια Git στον κατάλογο `/opt/git`.
42
42
Υποθέτοντας ότι το `/opt/git` υπάρχει σε αυτόν τον διακομιστή, μπορούμε να ρυθμίσουμε το νέο αποθετήριό μας αντιγράφοντας το γυμνό αποθετήριο:
43
43
@@ -67,7 +67,7 @@ $ git init --bare --shared
67
67
Βλέπουμε πόσο εύκολο είναι να πάρουμε ένα αποθετήριο Git, να δημιουργήσουμε μια γυμνή έκδοσή του και να την τοποθετήσουμε σε έναν διακομιστή στον οποίο εμείς και οι συνεργάτες μας έχουμε πρόσβαση μέσω SSH.
68
68
Τώρα είμαστε έτοιμοι να συνεργαστούμε στο ίδιο έργο.
69
69
70
-
Είναι σημαντικό να σημειωθεί ότι αυτό είναι κυριολεκτικά το μόνο που χρειάζεται να κάνουμε για να τρέξουμε έναν χρήσιμο διακομιστή Git στον οποίο έχουν πρόσβαση πολλοί χρήστες --απλά προσθέτουμε λογαριασμούς SSH σε ένα διακομιστή και ρίχνουμε ένα γυμνό αποθετήριο κάπου όπου όλοι αυτοί οι χρήστες έχουν πρόσβαση ανάγνωσης/εγγραφής.
70
+
Είναι σημαντικό να σημειωθεί ότι αυτό είναι κυριολεκτικά το μόνο που χρειάζεται να κάνουμε για να τρέξουμε έναν χρήσιμο διακομιστή Git στον οποίο έχουν πρόσβαση πολλοί χρήστες --απλά προσθέτουμε λογαριασμούς SSH σε έναν διακομιστή και ρίχνουμε ένα γυμνό αποθετήριο κάπου όπου όλοι αυτοί οι χρήστες έχουν πρόσβαση ανάγνωσης/εγγραφής.
71
71
Είμαστε έτοιμοι --δεν χρειάζεται τίποτα άλλο.
72
72
73
73
Στις επόμενες ενότητες θα δούμε πώς μπορούμε να επεκταθούμε σε πιο εξεζητημένες ρυθμίσεις.
Αν καθορίσουμε ακριβώς τη διαδρομή, το Git προσπαθεί να χρησιμοποιήσει σκληρούς συνδέσμους (hardlinks) ή να αντιγράψει απευθείας τα αρχεία που χρειάζονται.
31
31
Εάν καθορίσουμε το `file://`, το Git ενεργοποιεί τις διαδικασίες που συνήθως χρησιμοποιεί για τη μεταφορά δεδομένων μέσω δικτύου, μία μέθοδο μεταφοράς των δεδομένων γενικά πολύ λιγότερο αποτελεσματική.
32
32
Ο βασικός λόγος που θα θέλαμε να χρησιμοποιήσουμε το `file://` είναι η περίπτωση κατά την οποία θέλουμε ένα καθαρό αντίγραφο του αποθετηρίου με εξωτερικές αναφορές ή αντικείμενα που απομένουν --συνήθως μετά από εισαγωγή από ένα άλλο σύστημα ελέγχου εκδόσεων ή κάτι παρόμοιο (βλ. <<_ git_internals>> για σχετικές εργασίες συντήρησης).
33
-
Στη παρακάτω παράδειγμα θα χρησιμοποιήσουμε τη διαδρομή χωρίς το `file://` επειδή αυτό είναι σχεδόν πάντα πιο γρήγορο.
33
+
Στην παρακάτω παράδειγμα θα χρησιμοποιήσουμε τη διαδρομή χωρίς το `file://` επειδή αυτό είναι σχεδόν πάντα πιο γρήγορο.
34
34
35
35
Για να προσθέσουμε ένα τοπικό αποθετήριο σε ένα υπάρχον έργο Git, μπορούμε να εκτελέσουμε κάτι σαν:
Επειδή το Git μας επιτρέπει να έχουμε πολλαπλά απομακρυσμένα αποθετήρια, είναι δυνατό να έχουμε μια ροή εργασίας στην οποία κάθε προγραμματιστής έχει δικαίωμα εγγραφής στο δικό του δημόσιο αποθετήριο και δικαίωμα ανάγνωσης σε όλους τους άλλους.
39
+
Επειδή το Git μάς επιτρέπει να έχουμε πολλαπλά απομακρυσμένα αποθετήρια, είναι δυνατό να έχουμε μια ροή εργασίας στην οποία κάθε προγραμματιστής έχει δικαίωμα εγγραφής στο δικό του δημόσιο αποθετήριο και δικαίωμα ανάγνωσης σε όλους τους άλλους.
40
40
Αυτό το σενάριο περιλαμβάνει συχνά ένα κανονικό αποθετήριο που αντιπροσωπεύει το ``επίσημο'' έργο.
41
41
Για να συνεισφέρουμε σε αυτό το έργο, δημιουργούμε τον δικό μας δημόσιο κλώνο του έργου και ωθούμε τις αλλαγές μας σε αυτόν.
42
42
Στη συνέχεια, μπορούμε να στείλουμε ένα αίτημα στον συντηρητή του κύριου έργου να έλξει τις αλλαγές μας.
0 commit comments