Πώς να διαγράψετε ένα υποκατάστημα στο Git τοπικά και απομακρυσμένα


Υπάρχουν διάφοροι λόγοι για τους οποίους μπορείτε να διαγράψετε ένα υποκατάστημα στο GitHub. Ευτυχώς, η διαγραφή ενός κλάδου Git είναι εύκολη.

Βασικά Takeaways

  • Η διαγραφή κλάδων είναι ένα σημαντικό μέρος μιας τυπικής ροής εργασίας Git.
  • Μπορείτε να διαγράψετε έναν τοπικό κλάδο χρησιμοποιώντας την εντολή "git branch -d [branchname]", αλλά να είστε προσεκτικοί με τις μη συγχωνευμένες αλλαγές.
  • Διαφορετικά εργαλεία όπως το GitHub Desktop, το GitKraken, το Tower και το Bitbucket έχουν τις δικές τους μεθόδους διαγραφής υποκαταστημάτων, επομένως εξοικειωθείτε με τη συγκεκριμένη διαδικασία για κάθε εργαλείο.

Τα κλαδιά του Git είναι τόσο ελαφριά που είναι εύκολο να τα δημιουργήσετε όποτε χρειαστεί. Αλλά είναι επίσης εύκολο να καταλήξετε με υπολείμματα κλαδιών που δεν χρειάζεστε πλέον. Τι περιλαμβάνει λοιπόν η διαγραφή ενός υποκαταστήματος;

Γιατί να διαγράψετε ένα υποκατάστημα;

Πρώτον, εάν εξακολουθείτε να μαθαίνετε πώς να δομείτε ένα έργο χρησιμοποιώντας κλάδους git, υπάρχει πολύ καλή πιθανότητα να δημιουργήσετε ένα υποκατάστημα και στη συνέχεια να αποφασίσετε ότι δεν χρειάζεται. Αυτό είναι καλό αφού η διακλάδωση είναι μια ελαφριά λειτουργία. είναι πολύ γρήγορο και χρησιμοποιεί αποτελεσματικά το χώρο στο δίσκο.

Ως αποτέλεσμα, πολλές ροές εργασιών ανάπτυξης git ενθαρρύνουν τη διακλάδωση, ακόμη και για πολύ μικρές ή σύντομες εργασίες. Για παράδειγμα, μια κοινή στρατηγική είναι η δημιουργία ενός ξεχωριστού κλάδου για κάθε διόρθωση σφαλμάτων.

Η διαγραφή των υποκαταστημάτων θα πρέπει να είναι εξίσου μέρος της καθημερινής σας ροής εργασίας όπως και η δημιουργία τους.

Ένα αποθετήριο δειγμάτων με υποκαταστήματα

Τα παρακάτω παραδείγματα αναφέρονται σε ένα αποθετήριο δειγμάτων με την ακόλουθη δομή:

Σημειώστε ότι το repo έχει δύο κλάδους: main και dev. Κάθε ένα από αυτά τα τοπικά υποκαταστήματα είναι ένας κλάδος παρακολούθησης, με έναν αντίστοιχο κλάδο ανάντη σε έναν απομακρυσμένο διακομιστή (προέλευση).

Είναι εύκολο να χάσετε το ίχνος των υποκαταστημάτων, επομένως βεβαιωθείτε ότι γνωρίζετε πώς να καταχωρείτε τους κλάδους git από τη γραμμή εντολών ή να τους προβάλλετε στον πελάτη που προτιμάτε.

Διαγραφή υποκαταστήματος χρησιμοποιώντας τη γραμμή εντολών

Η βασική σύνταξη εντολών για τη διαγραφή ενός κλάδου είναι:

git branch (-d | -D) [-r] <branchname>...

Πώς να διαγράψετε ένα τοπικό υποκατάστημα

Η απλούστερη μορφή της εντολής διαγράφει έναν τοπικό κλάδο, με την προϋπόθεση ότι όλες οι αλλαγές του έχουν συγχωνευθεί:

git branch -d dev

Όταν τα πράγματα πάνε καλά, θα δείτε ένα μήνυμα επιβεβαίωσης:

Δεν μπορείτε να διαγράψετε τον κλάδο που είναι ενεργός αυτήν τη στιγμή. Αν προσπαθήσετε να το κάνετε, θα λάβετε ένα μήνυμα όπως αυτό:

Εάν διαγράψετε ένα τοπικό υποκατάστημα με μη συγχωνευμένες, μη προωθημένες αλλαγές, θα χάσετε αυτές τις αλλαγές. Επομένως, το git θα αρνηθεί να διαγράψει έναν τέτοιο κλάδο από προεπιλογή. Σε αυτό το παράδειγμα, η dev έχει αποσυγχωνεύσει αλλαγές που δεν έχουν προωθηθεί στον απομακρυσμένο κλάδο:

Όπως λέει το μήνυμα σφάλματος, μπορείτε να επιβάλετε τη διαγραφή με τη σημαία -D.

Μπορείτε να διαγράψετε ένα τοπικό υποκατάστημα παρακολούθησης εάν το αντίστοιχο απομακρυσμένο υποκατάστημά του είναι ενημερωμένο, ακόμη και αν δεν έχει συγχωνευθεί. Το Git θα εξακολουθεί να εμφανίζει μια προειδοποίηση, ώστε να γνωρίζετε τι συνέβη:

Πώς να διαγράψετε ένα απομακρυσμένο υποκατάστημα

Η διαγραφή ενός απομακρυσμένου κλάδου είναι αρκετά διαφορετική. Θα χρησιμοποιήσετε την εντολή git push μαζί με τη σημαία -d για διαγραφή. Μετά από αυτό, δώστε το όνομα του τηλεχειριστηρίου (συχνά προέλευση) και το όνομα του κλάδου:

Διαγραφή τοπικών και απομακρυσμένων υποκαταστημάτων με την επιφάνεια εργασίας GitHub

Σε αντίθεση με το πρόγραμμα git της γραμμής εντολών, η εφαρμογή επιφάνειας εργασίας του GitHub θα σας επιτρέψει να διαγράψετε μόνο τον ενεργό κλάδο. Μπορείτε να πραγματοποιήσετε αυτήν την ενέργεια μέσω του μενού Κλάδος, επιλέγοντας την επιλογή Διαγραφή και επιβεβαιώνοντάς την:

Το GitHub Desktop δεν σας επιτρέπει να διαγράψετε τον προεπιλεγμένο κλάδο—π.χ. main—αν και το ίδιο το git το υποστηρίζει. Εάν ο προεπιλεγμένος κλάδος είναι αυτός που είναι ενεργός αυτήν τη στιγμή, η εφαρμογή απενεργοποιεί την ενέργεια μενού.

Εάν ο κλάδος αντιπροσωπεύει επίσης έναν απομακρυσμένο κλάδο, το GitHub Desktop δίνει την επιλογή να το διαγράψετε και από το τηλεχειριστήριο:

Διαγραφή υποκαταστημάτων με χρήση του GitKraken

Το GitKraken εμφανίζει τους τοπικούς και απομακρυσμένους κλάδους του αποθετηρίου σας στην αριστερή πλαϊνή γραμμή. Πρέπει να διαγράψετε το καθένα ξεχωριστά.

Τοποθετήστε το δείκτη του ποντικιού πάνω από το κατάλληλο όνομα κλάδου και κάντε κλικ στο μενού ενεργειών Κλάδος που μοιάζει με τρεις κάθετες κουκκίδες. Από το μενού, επιλέξτε Διαγραφή :

Θα δείτε ένα μήνυμα επιβεβαίωσης που θα σας ενημερώνει ότι πρόκειται για καταστροφική λειτουργία. Μπορείτε να επιβεβαιώσετε ότι θέλετε να συνεχίσετε με το κουμπί Διαγραφή:

Αντικατοπτρίζοντας την προεπιλεγμένη συμπεριφορά του προγράμματος γραμμής εντολών git, πρέπει πρώτα να μεταβείτε σε κλάδο διαφορετικό από αυτόν που διαγράφετε. Διαφορετικά, θα δείτε ένα μήνυμα σφάλματος:

Διαγραφή τοπικών και απομακρυσμένων υποκαταστημάτων με χρήση του Tower

Η διαγραφή ενός κλάδου με το Tower μοιάζει πολύ με τη διαγραφή ενός κλάδου με το GitKraken. Η εφαρμογή εμφανίζει τοπικούς και απομακρυσμένους κλάδους σε ένα πλαίσιο στην αριστερή πλευρά. Κάντε δεξί κλικ σε οποιοδήποτε κλάδο και επιλέξτε Διαγραφή από το μενού περιβάλλοντος:

Μια βασική διαφορά είναι ότι μπορείτε να διαγράψετε ένα απομακρυσμένο υποκατάστημα, μαζί με το τοπικό υποκατάστημά του, κατά την επιβεβαίωση:

Διαγραφή υποκαταστήματος στο GitHub

Το GitHub λειτουργεί μόνο ως απομακρυσμένη πηγή, επομένως οι κλάδοι εκεί είναι απομακρυσμένοι από προεπιλογή. Εάν διαγράψετε ένα υποκατάστημα χρησιμοποιώντας τον ιστότοπο του GitHub, θα πρέπει να διαγράψετε το αντίστοιχο τοπικό υποκατάστημα χρησιμοποιώντας μία από τις άλλες μεθόδους εδώ.

Όπως και με την εφαρμογή GitHub Desktop, ο ιστότοπος του GitHub δεν θα σας επιτρέψει να διαγράψετε τον προεπιλεγμένο κλάδο. Εάν προσπαθήσετε, θα δείτε ένα μήνυμα σφάλματος:

Η διαγραφή οποιουδήποτε άλλου κλάδου, ωστόσο, είναι απλή. Από τη σελίδα Κώδικας του αποθετηρίου, κάντε κλικ στον σύνδεσμο υποκαταστήματα, εντοπίστε τον κλάδο που θέλετε να διαγράψετε και, στη συνέχεια, κάντε κλικ στο εικονίδιο Διαγραφή κλάδου, το οποίο μοιάζει με κάδο απορριμμάτων μπορώ:

Λάβετε υπόψη ότι δεν υπάρχουν έλεγχοι για μη συγχωνευμένες αλλαγές, επομένως το GitHub απλώς θα διαγράψει τον κλάδο αμέσως. Ωστόσο, δεδομένου ότι θα αντιπροσωπεύει πάντα έναν απομακρυσμένο κλάδο, αυτή η συμπεριφορά θα πρέπει να έχει νόημα.

Σημειώστε ότι, μετά τη διαγραφή, θα δείτε ένα κουμπί για Επαναφορά του κλάδου. Ωστόσο, αυτή είναι απλώς μια χρήσιμη δυνατότητα αναίρεσης, σε περίπτωση που κάνετε κλικ στο εικονίδιο διαγραφής κατά λάθος. Μην βασίζεστε σε αυτό, γιατί μόλις ανανεώσετε ή απομακρυνθείτε από τη σελίδα, θα χάσετε την επιλογή!

Διαγραφή τοπικών και απομακρυσμένων υποκαταστημάτων στο Bitbucket

Το Bitbucket, όπως και το GitHub, δεν θα σας επιτρέψει να διαγράψετε τον προεπιλεγμένο κλάδο. Το Bitbucket το αποκαλεί Κύριο κλάδο στις Ρυθμίσεις χώρου αποθήκευσης. Μπορείτε να διαγράψετε οποιοδήποτε άλλο υποκατάστημα που αναφέρεται στην καρτέλα Κλαδικά, μέσω του αντίστοιχου μενού Ενέργειες:

Μπορείτε επίσης να διαγράψετε περισσότερα από ένα υποκαταστήματα ταυτόχρονα εάν κάνετε μια μεγάλη επιχείρηση καθαρισμού:

Η διαγραφή υποκαταστημάτων είναι μέρος μιας τυπικής ροής εργασίας Git

Τα υποκαταστήματα Git μπορούν να περιπλέξουν τη ροή εργασίας σας, ειδικά ένα με τοπικούς, απομακρυσμένους κλάδους και κλάδους παρακολούθησης. Αλλά για απλή καθημερινή ανάπτυξη, είναι πιθανό να δημιουργείτε και να διαγράφετε τοπικά υποκαταστήματα όλη την ώρα. Αυτή είναι μια βασική πτυχή μιας τυπικής ροής εργασίας git στην οποία θα πρέπει να συνηθίσετε.

Εάν δυσκολεύεστε να θυμηθείτε πώς ακριβώς μπορείτε να διαγράψετε έναν κλάδο, σκεφτείτε να δημιουργήσετε ψευδώνυμα για να αφαιρέσετε κλάδους και απλώς τη διαδικασία.