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.
30
30
Πλέον αισθανόμαστε αυτοπεποίθηση να δημιουργούμε κλάδους, να μεταβαίνουμε σε αυτούς και να συγχωνεύουμε τοπικούς κλάδους.
31
-
Ακόμα μπορούμε να μοιραζόμαστε τους κλάδους μας ωθώντας τους σε έναν κοινόχρηστο διακομιστή, να δουλεύουμε με άλλους σε κοινούς κλάδους και να επανατοποθετούμε τους κλάδους μας προτού τους μοιραστούμε με άλλους.
31
+
Ακόμα μπορούμε να μοιραζόμαστε τους κλάδους μας ωθώντας τους σε έναν κοινόχρηστο διακομιστή, να δουλεύουμε με άλλους σε κοινούς κλάδους και να αλλάζουμε τη βάση των κλάδων μας προτού τους μοιραστούμε με άλλους.
32
32
Στη συνέχεια θα εξετάσουμε τι χρειάζεται ώστε να λειτουργήσουμε έναν δικό μας διακομιστή που θα φιλοξενεί ένα αποθετήριο Git.
αντιμετωπίζεται ως το θέμα ενός e-mail και οι υπόλοιπες ως το σώμα του.
74
74
Η κενή γραμμή που χωρίζει την περίληψη από τη λεπτομερή περιγραφή
75
75
είναι κρίσιμη (εκτός κι αν η λεπτομερής περιγραφή παραλείπεται
76
-
τελείως)· εργαλεία όπως η επανατοποθέτηση (rebase) μπορεί να
76
+
τελείως)· εργαλεία όπως η αλλαγή βάσης (rebase) μπορεί να
77
77
μπερδευτούν όταν τρέχουμε ταυτόχρονα.
78
78
79
79
Περαιτέρω παράγραφοι έρχονται μετά από κενές γραμμές.
@@ -506,7 +506,7 @@ $ git commit
506
506
507
507
[ΣΗΜΕΙΩΣΗ]
508
508
====
509
-
Ίσως θελήσουμε να χρησιμοποιήσουμε την εντολή `rebase -i` για να συναρμόσουμε την εργασία μας σε μία μόνο υποβολή ή να αναδιατάξουμε την εργασία μας στις υποβολές για να κάνουμε διευκολύνουμε τον συντηρητή να ελέγξει το επίθεμά μας --βλ. <<_rewriting_history>> για περισσότερες πληροφορίες σχετικά με τη διαδραστική επανατοποθέτηση.
509
+
Ίσως θελήσουμε να χρησιμοποιήσουμε την εντολή `rebase -i` για να συναρμόσουμε την εργασία μας σε μία μόνο υποβολή ή να αναδιατάξουμε την εργασία μας στις υποβολές για να κάνουμε διευκολύνουμε τον συντηρητή να ελέγξει το επίθεμά μας --βλ. <<_rewriting_history>> για περισσότερες πληροφορίες σχετικά με τη διαδραστική αλλαγή βάσης.
510
510
====
511
511
512
512
Όταν ολοκληρωθεί η εργασία στον κλάδο μας και είμαστε έτοιμοι να τον επιστρέψουμε στους διαχειριστές, μεταβαίνουμε στην αρχική σελίδα του έργου και κάνουμε κλικ στο κουμπί ``Fork'', ώστε να δημιουργήσουμε τη δική μας εγγράψιμη διχάλα του έργου.
@@ -556,7 +556,7 @@ Jessica Smith (2):
556
556
Η έξοδος μπορεί να αποσταλεί στον συντηρητή --του λέει από όπου διακλαδώθηκε η δουλειά, συνοψίζει τις υποβολές και λέει από πού να έλξει αυτήν τη δουλειά.
557
557
558
558
Σε ένα έργο, στο οποίο δεν είμαστε συντηρητές, είναι γενικά ευκολότερο να έχουμε έναν κλάδο όπως ο `master` να παρακολουθεί πάντα τον `origin/master` και να σδουλεύουμε σε θεματικούς κλάδους τους οποίους μπορούμε εύκολα να διαγράψουμε αν απορριφθούν.
559
-
Η διατήρηση ξεχωριστών θεματικών κλάδων για διαφορετικά θέματα διευκολύνει επίσης την επανατοποθέτηση της εργασίας μας, αν η άκρη του κύριου αποθετηρίου έχει μετακινηθεί εν τω μεταξύ και οι υποβολές μας δεν εφαρμόζονται πλέον με καθαρό τρόπο.
559
+
Η διατήρηση ξεχωριστών θεματικών κλάδων για διαφορετικά θέματα διευκολύνει επίσης την αλλαγή βάσης της εργασίας μας, αν η άκρη του κύριου αποθετηρίου έχει μετακινηθεί εν τω μεταξύ και οι υποβολές μας δεν εφαρμόζονται πλέον με καθαρό τρόπο.
560
560
Για παράδειγμα, εάν θέλουμε να δημιουργήσουμε ένα δεύτερο θέμα στο έργο, καλό είναι να μην συνεχίζουμε να εργαζόμαστε στον κλάδο του θέματος το οποίο μόλις ωθήσαμε, αλλά να ξεκινήσουμε από τον κλάδο `master` του αποθετηρίου:
561
561
562
562
[source,console]
@@ -575,7 +575,7 @@ $ git fetch origin
575
575
image::images/public-small-1.png[Αρχικό ιστορικό υποβολών με τη δουλειά στο `featureB`.]
576
576
577
577
Ας υποθέσουμε ότι ο συντηρητής του έργου έχει έλξει κάμποσα επιθέματα κώδικα και έχει δοκιμάσει τον πρώτο μας κλάδο, αλλά πλέον δεν συγχωνεύεται παστρικά.
578
-
Σε αυτήν την περίπτωση, μπορούμε να προσπαθήσουμε να επανατοποθετήσουμε αυτόν τον κλάδο στην κορυφή του κλάδου `origin/master`, να επιλύσουμε τις συγκρούσεις για τον διαχειριστή και στη συνέχεια να ωθήσουμε εκ νέου τις αλλαγές μας:
578
+
Σε αυτήν την περίπτωση, μπορούμε να προσπαθήσουμε να αλλάξουμε τη βάση αυτού του κλάδου στην κορυφή του κλάδου `origin/master`, να επιλύσουμε τις συγκρούσεις για τον διαχειριστή και στη συνέχεια να ωθήσουμε εκ νέου τις αλλαγές μας:
579
579
580
580
[source,console]
581
581
-----
@@ -590,7 +590,7 @@ $ git push -f myfork featureA
590
590
.Ιστορικό υποβολών μετά τη δουλειά στο `featureA`.
591
591
image::images/public-small-2.png[Ιστορικό υποβολών μετά τη δουλειά στο `featureA`.]
592
592
593
-
Επειδή επανατοποθετήσαμε τον κλάδο, πρέπει να χρησιμοποιήσουμε την επιλογή `-f` στην εντολή `push`, ώστε να μπορέσουμε να αντικαταστήσουμε τον κλάδο `featureA` στον διακομιστή με μια υποβολή που δεν είναι απόγονος του.
593
+
Επειδή αλλάξαμε τη βάση του κλάδου, πρέπει να χρησιμοποιήσουμε την επιλογή `-f` στην εντολή `push`, ώστε να μπορέσουμε να αντικαταστήσουμε τον κλάδο `featureA` στον διακομιστή με μια υποβολή που δεν είναι απόγονος του.
594
594
Μια εναλλακτική λύση θα ήταν να ωθήσουμε αυτήν τη νέα δουλειά σε ένα διαφορετικό κλάδο στον διακομίστή (ίσως με όνομα `featureAv2`).
595
595
596
596
Ας δούμε ένα ακόμα πιθανό σενάριο: ο διαχειριστής έχει εξετάσει την εργασία στον δεύτερό μας κλάδο και του αρέσει η ιδέα, αλλά θα ήθελε να αλλάξουμε μια-δυο λεπτομέρειες στην υλοποίησή της.
Copy file name to clipboardExpand all lines: book/05-distributed-git/sections/distributed-workflows.asc
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -69,10 +69,10 @@ image::images/integration-manager.png[Ροή εργασίας με διαχει
69
69
Το αποθετήριο του καλόβουλου δικτάτορα χρησιμεύει ως αποθετήριο αναφοράς από το οποίο όλοι οι συνεργάτες πρέπει να έλξουν (αρχεία).
70
70
Η διαδικασία λειτουργεί έτσι (βλ. <<wfdiag_c>>):
71
71
72
-
1. Οι απλοί προγραμματιστές ασχολούνται με τον θεματικό κλάδο τους και επανατοποθετούν την εργασία τους στον κλάδο `master`. Ο κλάδος `master` είναι αυτός του δικτάτορα.
73
-
2. Οι υπολοχαγοί συγχωνεύουν τους κλάδους των προγραμματιστών ο καθένας στον δικό του στον κλάδο `master`.
74
-
3. Ο δικτάτορας συγχωνεύει τους κλάδους των ``υπολοχαγών'' των υπολοχαγών στον κλάδο `master`του δικτάτορα.
75
-
4. Ο δικτάτορας σπρώχνει τον δικό του κλάδο `master` στο αποθετήριο αναφοράς, έτσι ώστε οι άλλοι προγραμματιστές να μπορέσουν να επανατοποθετηθούν.
72
+
0. Οι απλοί προγραμματιστές ασχολούνται με τον θεματικό κλάδο τους και αλλάζουν τη βάση της εργασίας τους στον κλάδο `master`. Ο κλάδος `master` είναι αυτός του δικτάτορα.
73
+
0. Οι υπολοχαγοί συγχωνεύουν τους κλάδους των προγραμματιστών ο καθένας στον δικό του στον κλάδο `master`.
74
+
0. Ο δικτάτορας συγχωνεύει τους κλάδους των ``υπολοχαγών'' των υπολοχαγών στον κλάδο `master`του δικτάτορα.
75
+
0. Ο δικτάτορας σπρώχνει τον δικό του κλάδο `master` στο αποθετήριο αναφοράς, έτσι ώστε οι άλλοι προγραμματιστές να μπορέσουν να αλλάξουν τη βάση τους σε αυτόν.
Copy file name to clipboardExpand all lines: book/05-distributed-git/sections/maintaining.asc
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -136,7 +136,7 @@ If you would prefer to skip this patch, instead run "git am --skip".
136
136
To restore the original branch and stop patching run "git am --abort".
137
137
-----
138
138
139
-
Αυτή η εντολή τοποθετεί σημάνσεις σύγκρουσης σε όλα τα αρχεία με τα οποία αντιμετωπίζει προβλήματα, όπως μια σύγκρουση σε συγχώνευσης ή επανατοποθέτηση.
139
+
Αυτή η εντολή τοποθετεί σημάνσεις σύγκρουσης σε όλα τα αρχεία με τα οποία αντιμετωπίζει προβλήματα, όπως μια σύγκρουση συγχώνευσης ή αλλαγής βάσης.
140
140
Μπορούμε να επιλύσουμε αυτό το πρόβλημα λίγο-πολύ με τον ίδιο τρόπο --επεξεργαζόμαστε το αρχείο για να επιλύσουμε τη σύγκρουση, τοποθετούμε το νέο αρχείο στο ενδιάμεσο στάδιο και στη συνέχεια να εκτελούμε την `git am --resolved` για να συνεχίσουμε στο επόμενο επίθεμα:
Έτσι, όταν κλωνοποιούμε το αποθετήριο Git, έχουμε τέσσερις κλάδους στους οποίους μπορούμε να μεταβούμε για να αξιολογήσουμε το έργο σε διαφορετικά στάδια ανάπτυξης, ανάλογα με το πόσο αιχμής θέλουμε να είμαστε ή πώς θέλουμε να συνεισφέρουμε· και ο συντηρητής έχει μια δομημένη ροή εργασίας για να τους βοηθήσει να ελέγξουν νέες συνεισφορές.
357
357
358
358
[[_rebase_cherry_pick]]
359
-
===== Ροές εργασίας επανατοποθέτησης και ανθολόγησης
359
+
===== Ροές εργασίας με αλλαγή βάσης και ανθολόγηση
360
360
361
361
(((workflows, rebasing and cherry-picking)))
362
362
Άλλοι συντηρητές προτιμούν να επανατοποθετούν ή να ανθολογούν (cherry-pick) τις συνεισφορές στην κορυφή του κύριου κλάδου τους, αντί να τις συγχωνεύουν, για να διατηρήσουν ένα κατά βάση γραμμικό ιστορικό.
Ο άλλος τρόπος για να μετακινήσουμε εργασία που εισάγεται από τον ένα κλάδο στον άλλο είναι η ανθολόγησή (cherry-pick) του.
369
-
Η ανθολόγηση στο Git είναι σαν μια επανατοποθέτηση μίας μόνο υποβολής.
369
+
Η ανθολόγηση στο Git είναι σαν μια αλλαγή βάσης μίας μόνο υποβολής.
370
370
Παίρνει το επίθεμα που εισήχθη σε μια υποβολή και προσπαθεί να το ξαναεφαρμόσει στον κλάδο στον οποίο βρισκόμαστε αυτήν τη στιγμή.
371
-
Η ανθολόγηση είναι χρήσιμη εάν έχουμε αρκετές υποβολές σε έναν θεματικό κλάδο και θέλουμε να ενσωματώσουμε μόνο μία από αυτές ή εάν έχουμε μόνο μία υποβολή σε έναν θεματικό κλάδο και προτιμάμε να την ανθολογήσουμε αντί να την επανατοποθετήσουμε.
371
+
Η ανθολόγηση είναι χρήσιμη εάν έχουμε αρκετές υποβολές σε έναν θεματικό κλάδο και θέλουμε να ενσωματώσουμε μόνο μία από αυτές ή εάν έχουμε μόνο μία υποβολή σε έναν θεματικό κλάδο και προτιμάμε να την ανθολογήσουμε αντί να αλλάξουμε τη βάση της.
372
372
Για παράδειγμα, ας υποθέσουμε ότι έχουμε ένα έργο που μοιάζει με αυτό:
373
373
374
374
.Παράδειγμα ιστορικού πριν την ανθολόγηση.
@@ -395,7 +395,7 @@ image::images/rebasing-2.png[Ιστορικό μετά την ανθολόγησ
395
395
===== Rerere
396
396
397
397
(((εντολές git, rerere)))(((rerere)))
398
-
Εάν κάνουμε πολλές συγχωνεύσεις και επανατοποθετήσεις ή διατηρούμε ένα μακρόβιο θεματικό κλάδο, το Git διαθέτει μια λειτουργία που λέγεται ``rerere'' και η οποία μπορεί να μας βοηθήσει.
398
+
Εάν κάνουμε πολλές συγχωνεύσεις και αλλαγές βάσης ή διατηρούμε ένα μακρόβιο θεματικό κλάδο, το Git διαθέτει μια λειτουργία που λέγεται ``rerere'' και η οποία μπορεί να μας βοηθήσει.
399
399
400
400
`rerere` σημαίνει ``επαναχρησιμοποίηση καταγεγραμμένης επίλυσης'' (``reuse recorded resolution'') – είναι ένας τρόπος σύντομης αντιμετώπισης της μη-αυτόματης επίλυσης συγκρούσεων.
401
401
Όταν η rerere είναι ενεργοποιημένη, το Git διατηρεί ένα σύνολο προ- και μετα- εικόνων από επιτυχείς συγχωνεύσεις και αν παρατηρήσει ότι υπάρχει μια σύγκρουση που μοιάζει ακριβώς με μία που έχουμε ήδη επιλύσει, θα χρησιμοποιήσει απλώς το επίθεμα από την τελευταία φορά, χωρίς να μας ενοχλήσει.
0 commit comments