Git
Chapters ▾ 2nd Edition

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

Εφόσον δεν δώσουμε το όνομα μίας υποβολής ή ενός κλάδου οι επιλογές --merged και --no-merged θα μας δείξουν τι έχει ή δεν έχει συγχωνευτεί, αντίστοιχα, στον τρέχοντα κλάδο μας.

Μπορούμε επίσης να δώσουμε μία επιπρόσθετη παράμετρο για να ρωτήσουμε για την κατάσταση συγχώνευσης σε σχέση με κάποιον άλλο κλάδο χωρίς να έχουμε μεταβεί σε αυτόν τον κλάδο προηγουμένως. Για παράδειγμα, στο παρακάτω ρωτάμε, “τι δεν έχει συγχωνευτεί στον κλάδο master ακόμα;”

$ git checkout testing
$ git branch --no-merged master
  topicA
  featureB