-
1. Ξεκινώντας με το Git
-
2. Τα θεμελιώδη στοιχεία του Git
-
3. Διακλαδώσεις στο Git
-
4. Το Git στον διακομιστή
- 4.1 Τα πρωτόκολλα
- 4.2 Εγκατάσταση του Git σε διακομιστή
- 4.3 Δημιουργία δημόσιου κλειδιού SSH
- 4.4 Στήσιμο του διακομιστή
- 4.5 Δαίμονες του Git
- 4.6 Έξυπνο HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Επιλογές φιλοξενίας από τρίτους
- 4.10 Ανακεφαλαίωση
-
5. Κατανεμημένο Git
-
6. GitHub
-
7. Εργαλεία του Git
- 7.1 Επιλογή αναθεώρησης
- 7.2 Διαδραστική εργασία με το στάδιο καταχώρισης
- 7.3 stash και clean
- 7.4 Υπογραφή της δουλειάς μας
- 7.5 Αναζήτηση
- 7.6 Η ιστορία ξαναγράφεται
- 7.7 Απομυθοποίηση της reset
- 7.8 Συγχωνεύσεις για προχωρημένους
- 7.9 Rerere
- 7.10 Αποσφαλμάτωση με το Git
- 7.11 Λειτουργικές υπομονάδες
- 7.12 Δεμάτιασμα δεδομένων
- 7.13 Replace
- 7.14 Αποθήκευση διαπιστευτηρίων
- 7.15 Ανακεφαλαίωση
-
8. Εξατομίκευση του Git
-
9. Το Git και άλλα συστήματα
- 9.1 Το Git ως πελάτης
- 9.2 Μετανάστευση στο Git
- 9.3 Ανακεφαλαίωση
-
10. Εσωτερική λειτουργία του Git
- 10.1 Διοχετεύσεις και πορσελάνες
- 10.2 Αντικείμενα του Git
- 10.3 Αναφορές του Git
- 10.4 Πακετάρισμα αρχείων
- 10.5 Τα refspec
- 10.6 Πρωτόκολλα μεταφοράς
- 10.7 Διατήρηση και ανάκτηση δεδομένων
- 10.8 Μεταβλητές περιβάλλοντος
- 10.9 Ανακεφαλαίωση
-
A1. Appendix A: Το Git σε άλλα περιβάλλοντα
- A1.1 Γραφικές διεπαφές
- A1.2 Το Git στο Visual Studio
- A1.3 Git στο Eclipse
- A1.4 Το Git στο Bash
- A1.5 Το Git στο Zsh
- A1.6 Το Git στο Powershell
- A1.7 Ανακεφαλαίωση
-
A2. Appendix B: Ενσωμάτωση του Git στις εφαρμογές μας
- A2.1 Γραμμή εντολών Git
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Εντολές Git
- A3.1 Ρύθμιση και διαμόρφωση
- A3.2 Λήψη και δημιουργία έργων
- A3.3 Βασική λήψη στιγμιοτύπων
- A3.4 Διακλάδωση και συγχώνευση
- A3.5 Κοινή χρήση και ενημέρωση έργων
- A3.6 Επιθεώρηση και σύγκριση
- A3.7 Αποσφαλμάτωση
- A3.8 Επιθέματα
- A3.9 Ηλεκτρονικό ταχυδρομείο
- A3.10 Εξωτερικά Συστήματα
- A3.11 Διοίκηση
- A3.12 Εντολές διοχέτευσης
3.3 Διακλαδώσεις στο Git - Διαχείριση κλάδων
Διαχείριση κλάδων
Τώρα που έχουμε δημιουργήσει, συγχωνεύσει και διαγράψει μερικούς κλάδους, ας δούμε μερικά εργαλεία διαχείρισης κλάδων που θα μας είναι χρήσιμα όταν αρχίσουμε να χρησιμοποιούμε κλάδους συνεχώς.
Η εντολή git branch
εκτός από το να δημιουργεί και να διαγράφει κλάδους κάνει και κάποια άλλα πράγματα.
Αν την τρέξουμε χωρίς ορίσματα, τότε παίρνουμε μία λίστα όλων των κλάδων:
$ git branch
iss53
* master
testing
Ο χαρακτήρας *
πριν από τον κλάδο master
επισημαίνει ότι ο κλάδος αυτός είναι ο τρέχων κλάδος, δηλαδή ο κλάδος στον οποίο δείχνει ο δείκτης HEAD
).
Αυτό σημαίνει ότι αν κάνουμε μία υποβολή σε αυτό το σημείο, ο κλάδος master
θα προχωρήσει.
Για να δούμε την τελευταία υποβολή του κάθε κλάδου μπορούμε να τρέξουμε την εντολή git branch -v
:
$ git branch -v
iss53 93b412c fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 add scott to the author list in the readmes
Οι επιλογές --merged
και --no-merged
φιλτράρουν τη λίστα των κλάδων και κρατούν μόνον όσους κλάδους έχουν και δεν έχουν ακόμα συγχωνευτεί στον τρέχοντα κλάδο.
Για να δούμε ποιοι κλάδοι έχουν ήδη συγχωνευτεί στον τρέχοντα κλάδο, τρέχουμε την εντολή git branch --merged
:
$ git branch --merged
iss53
* master
Επειδή είχαμε ήδη συγχωνεύσει τον κλάδο iss53
προηγουμένως, φαίνεται στη λίστα μας.
Γενικά είναι ασφαλές να διαγράψουμε τους κλάδους σε αυτήν τη λίστα που δεν έχουν το *
χρησιμοποιώντας την εντολή git branch -d
· έχουμε ήδη ενσωματώσει τις αλλαγές τους σε κάποιον άλλο κλάδο, συνεπώς δεν πρόκειται να χάσουμε τίποτα.
Για αν δούμε όλους τους κλάδους που περιέχουν εργασία που δεν έχουμε συγχωνεύσει σε κάποιον άλλο κλάδο ακόμα, μπορούμε να τρέξουμε την εντολή git branch --no-merged
:
$ git branch --no-merged
testing
Αυτή μας δείχνει τον άλλο κλάδο.
Επειδή αυτός ο κλάδος περιέχει δουλειά που δεν έχει ακόμα συγχωνευτεί σε κάποιον άλλο κλάδο, αν αποπειραθούμε να τον διαγράψουμε με την εντολή git branch -d
θα αποτύχουμε:
$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
Αν πραγματικά θέλουμε να διαγράψουμε έναν τέτοιο κλάδο και να χάσουμε τη δουλειά που περιέχει, μπορούμε να επιβάλουμε τη διαγραφή με την επιλογή -D
, όπως υποδεικνύει και το παραπάνω μήνυμα.
Tip
|
Εφόσον δεν δώσουμε το όνομα μίας υποβολής ή ενός κλάδου οι επιλογές Μπορούμε επίσης να δώσουμε μία επιπρόσθετη παράμετρο για να ρωτήσουμε για την κατάσταση συγχώνευσης σε σχέση με κάποιον άλλο κλάδο χωρίς να έχουμε μεταβεί σε αυτόν τον κλάδο προηγουμένως. Για παράδειγμα, στο παρακάτω ρωτάμε, “τι δεν έχει συγχωνευτεί στον κλάδο
|