advanced git commands
Αυτό το σεμινάριο διερευνά χρήσιμες εντολές Git όπως το Git Stash, το Git Reset, το Git Cherry Pick, το Git Bisect & εξηγεί πώς να ενσωματώσετε το GitHub με το Jira:
Στα προηγούμενα σεμινάρια αυτής της σειράς, έχουμε δει τα περισσότερα από τα χαρακτηριστικά του GitHub.
Σε αυτό το σεμινάριο, θα εξετάσουμε τα εξής:
- Δημιουργία κυκλοφοριών
- Ενσωμάτωση με το Atlassian Jira
- Οι εντολές Git που χρησιμοποιούνται πιο συχνά για προγραμματιστές
- Git Stash
- Git Cherry Pick
- Επαναφορά Git
- Git Bisect
=> Ρίξτε μια ματιά στον οδηγό GitHub εδώ.
Ποια είναι η διαφορά μεταξύ διασφάλισης ποιότητας και ελέγχου ποιότητας;
Τι θα μάθετε:
- Δημιουργία κυκλοφοριών
- Ενσωμάτωση GitHub με την Jira
- Προηγμένες εντολές Git για προγραμματιστές
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Δημιουργία κυκλοφοριών
Οι κυκλοφορίες στο GitHub χρησιμοποιούνται για τη δέσμευση του λογισμικού σας, για την προσθήκη σημειώσεων έκδοσης και δυαδικών αρχείων (αρχεία WAR, EAR, JAR) για πελάτες και άτομα που χρησιμοποιούν το ίδιο.
Για να δημιουργήσετε μια Έκδοση, μεταβείτε στην κύρια σελίδα του αποθετηρίου και κάντε κλικ στο Κυκλοφορίες κάτω από την καρτέλα Διαχείριση θεμάτων.
Κάντε κλικ στο Δημιουργήστε μια νέα κυκλοφορία.
Δώστε μια ετικέτα και έναν τίτλο κυκλοφορίας. Τα δυαδικά αρχεία προστίθενται επίσης στην κυκλοφορία. Μόλις τελειώσετε κάντε κλικ στο Δημοσίευση κυκλοφορίας.
Η κυκλοφορία είναι τώρα έτοιμη με τον πηγαίο κώδικα και τα δυαδικά αρχεία.
Ενσωμάτωση GitHub με την Jira
Μία από τις σημαντικές πτυχές ιχνηλασιμότητας είναι η αναφορά του ζητήματος Jira με τις δεσμεύσεις στο GitHub. Το GitHub μπορεί να ενσωματωθεί με την Jira όχι μόνο για την αναφορά του ζητήματος, αλλά και για τη δημιουργία υποκαταστημάτων και την Αίτηση τραβήγματος από την Jira.
Έτσι, συνήθως, όταν ο προγραμματιστής αρχίσει να εργάζεται για την εργασία ή σφάλματα, δημιουργείται ένας κλάδος από αυτόν. Δημοσίευση της ανάπτυξης ή επίλυση των σφαλμάτων μπορεί να δημιουργηθεί ένα αίτημα τραβήγματος από την Jira για συγχώνευση στο κύριο κύριος κλαδί. Ο κλάδος που δημιουργήθηκε από τον προγραμματιστή μπορεί στη συνέχεια να διαγραφεί.
Για να ρυθμίσουμε την ενσωμάτωση, χρησιμοποιήσαμε ένα πρόσθετο Git Integration για την Jira. Αυτό είναι ένα εμπορικό πρόσθετο. Μπορείτε να κατεβάσετε την προσθήκη από εδώ
Εγκαταστήστε την προσθήκη στο Jira από Διαχειριστής -> Πρόσθετα.
Μόλις εγκατασταθεί η προσθήκη, μεταβείτε στο Εφαρμογή -> Αποθήκες Git και συνδεθείτε στο GitHub.
Εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασης του GitHub. Κάντε κλικ Συνδέω-συωδεομαι .
Θα εμφανιστούν τα αποθετήρια που αναφέρονται στον λογαριασμό χρήστη. Κάντε κλικ στο Εισαγωγή αποθετηρίων για να ολοκληρώσετε τη ρύθμιση ενοποίησης.
GitHub Commit With Jira Issue
Ως μέρος του μηνύματος δέσμευσης εισάγετε όπως φαίνεται παρακάτω. Κάντε κλικ στο Δέσμευση αλλαγών .
Παράδειγμα 1: Παρακάτω είναι ένα παράδειγμα του Έξυπνη δέσμευση το οποίο επιτρέπει στους προγραμματιστές να εκτελούν ενέργειες στα ζητήματα Jira από το μήνυμα δέσμευσης. Μια τέτοια εντολή είναι η #σχόλιο μαζί με το πλήκτρο Issue που προσθέτει το σχόλιο στο ζήτημα Jira όπως φαίνεται παρακάτω.
Η ενότητα σχολίων ενημερώθηκε.
Παράδειγμα 2: Εκχωρήστε σε έναν χρήστη και ενημερώστε το χρόνο που αφιερώνεται ως 4 ώρες.
Χρησιμοποιήστε το #αναθέτω και #χρόνος έξυπνη εντολή εντολής στο μήνυμα δέσμευσης.
Και οι δύο ενέργειες έχουν ολοκληρωθεί.
Παράδειγμα 3: Αλλάξτε την κατάσταση του ζητήματος σε Σε εξέλιξη .
Δημιουργήστε ένα υποκατάστημα
Καθώς οι εργασίες και τα σφάλματα ανατίθενται σε προγραμματιστές, πρέπει να αρχίσουν να εργάζονται για την ανάπτυξη. Γι 'αυτό δημιουργούν έναν κλάδο για το ζήτημα στο οποίο εργάζονται, κάνουν τις αναπτυξιακές δραστηριότητες και θέτουν ένα αίτημα έλξης για να μπουν στον κύριο κλάδο.
Στο τεύχος Jira στο κάτω μέρος κάντε κλικ στο Δημιουργία υποκαταστήματος.
Κάντε κλικ στο Δημιουργία υποκαταστήματος.
Στο GitHub, κάντε μια αλλαγή στο αρχείο στον κλάδο που δημιουργήθηκε παραπάνω και κάντε το ίδιο.
Καθώς η ανάπτυξη έχει ολοκληρωθεί, ο χρήστης μπορεί στη συνέχεια να υποβάλει ένα αίτημα τραβήγματος από την Jira.
Στο κάτω μέρος του ζητήματος κάντε κλικ στο Δημιουργία αιτήματος τραβήγματος.
Κάντε κλικ στο Δημιουργώ. Το αίτημα τραβήγματος θα εμφανίζεται ως ανοιχτό.
Το επόμενο βήμα είναι η συγχώνευση του αιτήματος έλξης στο GitHub.
Η κατάσταση ενημερώνεται αναλόγως στο Jira.
Προηγμένες εντολές Git για προγραμματιστές
Σε αυτήν την τελευταία ενότητα, θα εξετάσουμε μερικές από τις κοινώς χρησιμοποιούμενες εντολές Git για προγραμματιστές. Δεν έχει καμία σχέση με το GitHub, αλλά θα βοηθήσει τους προγραμματιστές πριν προωθήσουν τις αλλαγές στο GitHub.
Git Stash
Στα περισσότερα από τα σενάρια του έργου, όταν εργάζεστε σε μια νέα δυνατότητα ή βελτίωση, ξαφνικά θα χρειαζόταν να εργαστείτε σε ένα επείγον ελάττωμα που έχει αναφερθεί και είναι ένα πρόγραμμα διακοπής της εκπομπής. Καθώς μπαίνετε στο νέο σας έργο και δεν το έχετε ολοκληρώσει, δεν έχει νόημα να κάνετε τις αλλαγές που έχουν ολοκληρωθεί στο μισό.
Επομένως, είναι καλύτερο να αναστείλετε ή να αποθηκεύσετε προσωρινά την ημιτελή εργασία, να εργαστείτε στο σφάλμα και να επιστρέψετε στην εργασία σχετικά με τη νέα δυνατότητα ή τη βελτίωση. Το Git stash παρέχει μια λύση σε αυτό. Μπορείτε εύκολα να αλλάξετε το πλαίσιο πραγματοποίησης αλλαγών γρήγορα.
Παράδειγμα 1 :Ας υποθέσουμε ότι εργάζεστε σε μια εργασία που σας έχει ανατεθεί και όταν κοιτάτε την κατάσταση, δείχνει ότι δεν έχει παρακολουθηθεί από τώρα.
Ξαφνικά υπάρχει ένα σφάλμα υψηλής προτεραιότητας που σας έχει ανατεθεί. Επομένως, πρέπει να αποθηκεύσουμε προσωρινά ή να αποθηκεύσουμε την εργασία που επεξεργάζεται αυτήν τη στιγμή.
Εκτελέστε την ακόλουθη εντολή.
git stash αποθήκευση 'Μήνυμα'
Αυτή τη στιγμή ο κατάλογος εργασίας είναι καθαρός. Οποιεσδήποτε νέες δεσμεύσεις μπορούν να γίνουν και εάν υπάρχουν σφάλματα, τότε μπορείτε να αλλάξετε το κλάδο για να το επεξεργαστείτε κ.λπ.
Όταν θέλετε να εφαρμόσετε ξανά τις αλλαγές που είχατε αφήσει, χρησιμοποιήστε την εντολή.
git stash ποπ
Η παραπάνω εντολή θα αφαιρέσει το stash από τη λίστα και θα εφαρμόσει την τελευταία αποθηκευμένη κατάσταση.
Μπορείτε επίσης να χρησιμοποιήσετε:
ισχύουν git stash
Η παραπάνω εντολή θα διατηρήσει τις αλλαγές στο stash και δεν θα τις αφαιρέσει.
Τώρα οι αλλαγές εφαρμόζονται ξανά και μπορείτε να πραγματοποιήσετε τις αλλαγές.
Παράδειγμα 2: Αποκρύψτε τις αλλαγές σας, αλλάξτε κλάδο και συγχωνεύστε τις αλλαγές.
Πραγματοποιήστε την αλλαγή στο αρχείο Html στο κύριος αλλαγές κλάδου και αποθήκευσης.
Επόμενο είναι να μεταβείτε στο έντομο υποκατάστημα, κάντε αλλαγές και δεσμεύστε αλλαγές.
git checkout-b σφάλμα
Πραγματοποιήστε αλλαγές στο αρχείο Html.
git commit -a -m 'Διορθώθηκε το πρόβλημα ηλεκτρονικού ταχυδρομείου'
Επιστρέψτε στο κύριος υποκατάστημα και εφαρμόστε ξανά αλλαγές από το stash.
Τώρα συγχωνεύστε από το έντομο υποκατάστημα στο κύριος κλαδί. Δέσμευση των αλλαγών μετά τη συγχώνευση.
Παράδειγμα 3: Εργασία με το Multiple Stash.
Στο τοπικό repo, υπάρχουν 2 αρχεία Html. Έτσι, είναι πιθανό πολλοί προγραμματιστές να δουλεύουν σε πολλά αρχεία και να αποθηκεύουν τις αλλαγές, όπως απαιτείται, για να επεξεργάζονται επείγοντα αιτήματα που έρχονται στο δρόμο τους για να διορθώσουν τις αλλαγές.
Ο προγραμματιστής 1 λειτουργεί στο hello.html και ο προγραμματιστής 2 λειτουργεί στο index.html.
Προγραμματιστής 1
Η λίστα Stash έχει 1 καταχώριση τώρα.
Προγραμματιστής 2
Η λίστα Stash έχει τώρα 2 καταχωρήσεις. Το τελευταίο stash είναι πρώτο στο stack που είναι stash @ {0}. Τώρα και οι δύο προγραμματιστές μπορούν να κάνουν οποιαδήποτε άλλη δέσμευση επειγόντως ή να εργαστούν σε κάποιο άλλο υποκατάστημα και στη συνέχεια να επιστρέψουν στο κύριος διακλάδωση και εφαρμόστε τις αλλαγές stash.
Για να εφαρμόσετε το πιο πρόσφατο stash, μπορείτε απλώς να εκτελέσετε
git stash ποπ
Για να εφαρμόσετε ένα συγκεκριμένο stash στη στοίβα, εκτελέστε την ακόλουθη εντολή.
git stash pop stash @ {1}
Ας εφαρμόσουμε το δεύτερο stash που είναι stash @ {1}
Παρομοίως, μπορεί να εφαρμοστεί και το άλλο stash.
Git Cherry Pick
Σήμερα, οι προγραμματιστές εργάζονται σε πολλούς κλάδους, όπως δυνατότητα, βελτίωση, σφάλμα κ.λπ.
Υπάρχουν καταστάσεις όπου πρέπει να επιλεγούν μόνο δύο συγκεκριμένες δεσμεύσεις και να μην συγχωνευθεί ολόκληρο το υποκατάστημα σε άλλο υποκατάστημα. Αυτό ονομάζεται Cherry Pick. Αυτή η διαδικασία σάς επιτρέπει να διαλέξετε αυθαίρετα οποιαδήποτε δέσμευση Git από τους άλλους κλάδους και να την προσαρτήσετε στον τρέχοντα HEAD του δέντρου εργασίας.
Παράδειγμα 1:
Στο τοπικό αποθετήριο git, έχουμε τα ακόλουθα 6 αρχεία.
Ένα αρχείο διαγράφεται ας πούμε file5.txt.
Δέσμευση των αλλαγών.
Κοιτάξτε το αρχείο καταγραφής τώρα. Το File5.txt διαγράφεται.
Λοιπόν, θέλουμε να Cherry-Pick η δέσμευση όπου προσθέσαμε το file5.txt. Πρέπει να βρούμε το αναγνωριστικό δέσμευσης του file5.tx και να εκτελέσουμε την εντολή.
git cherry-pick
Σε αυτήν την περίπτωση, το αναγνωριστικό δέσμευσης του όταν προστέθηκε το file5.txt είναι a2f0124
Το File5.txt έχει πλέον αποκατασταθεί. Εμείς Cherry-Picked η δέσμευση.
Παράδειγμα 2:
Ας τροποποιήσουμε file6.txt και δεσμεύστε τις αλλαγές στο κύριος κλαδί.
Κοιτάξτε τη δεύτερη γραμμή στο file6.txt όπου το email δεν έχει καθοριστεί σωστά.
Δημιουργήστε έναν κλάδο σφαλμάτων και διορθώστε το πρόβλημα. Ταυτόχρονα, τροποποιήστε επίσης το file5.txt, έτσι ώστε να έχουμε πολλές δεσμεύσεις στον κλάδο σφαλμάτων, αλλά το Cherry-Pick θα κάνει μόνο τη δέσμευση στο αρχείο6.txt.
Το αρχείο6 τροποποιήθηκε το έντομο κλαδί.
Έτσι, συνολικά, έχουμε κάνει αλλαγές στο αρχείο5 και αρχείο6 στον κλάδο Bug.
Ας επιστρέψουμε τώρα στο κύριος υποκατάστημα και Cherry-Pick η δέσμευση που έχει γίνει μόνο για file6.txt.
Όπως μπορείτε να το δείτε αντί να συγχωνεύσετε το έντομο υποκατάστημα στο κύριος υποκατάστημα, έχουμε επιλέξει μόνο Cherry μόνο μια συγκεκριμένη δέσμευση και εφαρμόσαμε στον κύριο κλάδο.
Επαναφορά Git
Η επαναφορά του Git είναι μια ισχυρή εντολή για την αναίρεση τοπικών αλλαγών. Έτσι, για να καταργήσετε το στάδιο, χρησιμοποιούνται όλα τα σταδιακά αρχεία αυτής της εντολής.
Παράδειγμα
Τροποποιήστε ένα αρχείο και προσθέστε το στη σταδιοποίηση. Επαναφέρετε χρησιμοποιώντας την εντολή όπως φαίνεται όταν οι σταδιακές αλλαγές είναι σταδιακές.
Παράμετροι του επαναφορά git εντολή.
-μαλακός: Αυτή η παράμετρος θα οδηγήσει το HEAD σε άλλη δέσμευση. Όλα τα αρχεία αλλάζουν μεταξύ του αρχικού HEAD και η δέσμευση θα πραγματοποιηθεί. Ο κατάλογος εργασίας είναι ανέπαφος.
Κοιτάξτε την τρέχουσα τοποθεσία HEAD.
Ας επιστρέψουμε 5 δεσμεύσεις στην ιστορία.
Επαναλάβετε τις αλλαγές.
-μικτός: Η επιλογή είναι παρόμοια με τη μαλακή παράμετρο. Συνήθως, όταν υπάρχουν κάποιες κακές δεσμεύσεις, τις αφαιρείτε και τις διορθώνετε αργότερα και την αναλαμβάνετε ξανά. Ουσιαστικά, πρέπει να προσθέσουμε στο ευρετήριο χρησιμοποιώντας git add και μετά git δεσμεύω. Οι αλλαγές παραμένουν στο δέντρο εργασίας.
Ας επιστρέψουμε 2 δεσμεύσεις στην ιστορία και ας δούμε ότι τα αρχεία δεν έχουν παρακολουθηθεί.
Τώρα προσθέστε τα αρχεία στη σταδιοποίηση και πραγματοποιήστε τις αλλαγές.
-σκληρά: Αυτή η παράμετρος θα παραμείνει σε ένα σημείο όπου υπήρχε ένα συγκεκριμένο αρχείο. Οι αλλαγές δεν θα είναι διαθέσιμες στο δέντρο εργασίας.
Κοιτάζοντας το παραπάνω αρχείο καταγραφής, ας επιστρέψουμε στο σημείο όπου δεσμεύτηκε μόνο το αρχείο 1, δηλαδή η τελευταία καταχώρηση.
Χρησιμοποιώντας επαναφορά git - σκληρό
Git Bisect
Βρείτε την ακριβή δέσμευση που έσπασε τον κώδικα (τελικά όλοι είμαστε άνθρωποι). Συχνά κατά τη διάρκεια της δοκιμής της εφαρμογής, ακούμε από τους υπεύθυνους δοκιμών ότι υπάρχει σφάλμα ή ότι η λειτουργία έχει σπάσει και εσείς ως προγραμματιστής θα πείτε ότι λειτούργησε την περασμένη εβδομάδα. Λοιπόν, τι συνέβη και γιατί εμφανίστηκε αυτό το σφάλμα;
Μερικές φορές μια αλλαγή στον άλλο κώδικα θα μπορούσε να έχει επηρεάσει τη λειτουργία σας. Πρέπει να αφιερώσετε χρόνο περνώντας το ιστορικό όπου υπάρχουν πολλές δεσμεύσεις που είναι χρονοβόρες και δύσκολο να εντοπιστεί ποια αλλαγή προκάλεσε τη διακοπή του κώδικα.
Git Bisect είναι η εντολή για να βρείτε την ακριβή δέσμευση κατά την εισαγωγή του σφάλματος. Με το Git bisect πρέπει να διαλέξετε δύο δεσμεύσεις, μία καλή και μία κακή. Περίπου στα μισά μεταξύ των δύο δεσμεύσεων θα ελεγχθεί. Ελέγχετε κάθε διαπραγμάτευση είτε κακή είτε καλή έως ότου εντοπιστεί η δέσμευση που προκάλεσε το σφάλμα ή τον κωδικό να σπάσει.
Παράδειγμα:
- Δημιουργήστε ένα νέο τοπικό αποθετήριο git και δημιουργήστε ένα αρχείο που ονομάζεται index.html
- Αρχικά περιεχόμενα του αρχείου όπως φαίνεται.
- Προσθέστε στο στάδιο και δεσμεύστε στο αποθετήριο.
- Δημιουργήστε ένα ιστορικό δεσμεύσεων όπως φαίνεται, έτσι ώστε να μπορούμε να επιλέξουμε μεταξύ καλών και κακών δεσμεύσεων. Τώρα καθώς γίνεται η αρχική δέσμευση, κάντε τις άλλες αλλαγές όπως φαίνεται και δεσμεύστε το ίδιο. Συνολικά, θα κάνουμε 7 δεσμεύσεις.
Δεύτερη αλλαγή
Τρίτη αλλαγή
Τέταρτη αλλαγή
Πέμπτη αλλαγή
Έκτη αλλαγή
Έβδομη αλλαγή
Ας σταματήσουμε εδώ. Έχουμε επτά δεσμεύσεις.
Αν κοιτάξετε τη σελίδα Html, οι γραμμές μετά το 'Όλα τα 4 συμβάντα ...' είναι λάθος και επομένως η τεκμηρίωση δεν είναι σωστή. Επομένως, πρέπει να βρούμε τη δέσμευση όπου εισήχθη το σφάλμα, ώστε να μπορούμε να στηρίξουμε το HEAD μας σε αυτήν τη δέσμευση.
Ας δούμε το αρχείο καταγραφής και να μάθουμε το κακό και καλή δέσμευση.
Η τελευταία δέσμευση δεν είναι σωστή, επομένως μπορεί να είναι μια κακή δέσμευση. Η δέσμευση εισήχθη μετά την τρίτη δέσμευση, έτσι μπορούμε να έχουμε το Τρίτη αλλαγή ως καλή δέσμευση.
Η διαδικασία διχοτομής ξεκινά με git bisect έναρξη και τελειώνει με επαναφορά git bisect.
git bisect κακο // Καθώς η τελευταία δέσμευση είναι κακή. Δεν χρειάζεται να παρέχετε το αναγνωριστικό δέσμευσης.
git bisect καλό
Τώρα μπορείτε να δείτε ότι το HEAD βρίσκεται τώρα ανάμεσα στο μισό του κακού και του καλού.
Κοιτάξτε το περιεχόμενο του index.html και δείτε αν υπάρχει καλή δέσμευση. Εάν όχι, τότε το σφάλμα εξακολουθεί να μην βρέθηκε.
Όχι πραγματικά ότι το σφάλμα εξακολουθεί να υπάρχει. Η τελευταία γραμμή είναι λάθος. Λοιπόν, τρέχουμε git bisect κακό ». Υπάρχει ακόμη μια κακή δέσμευση και το τρέχον περιεχόμενο δεν είναι αποδεκτό.
Το παραπάνω περιεχόμενο είναι σωστό και αποδεκτό.
Εκτελέστε το «git log –oneline» και το «git bisect good».
Ετσι το Πέμπτη αλλαγή ήταν η πρώτη κακή δέσμευση και πραγματικά έτσι. Το σφάλμα αναγνωρίζεται.
Το τρέχον περιεχόμενο πρέπει να βρίσκεται στην τελική τεκμηρίωση.
Καθώς εντοπίζεται η κακή δέσμευση, μπορείτε να ενημερώσετε τον προγραμματιστή για να διορθώσει τις αλλαγές που μπορεί να είναι η επαναφορά της κεφαλής στην τέταρτη αλλαγή που ήταν η τελευταία καλή δέσμευση.
Τρέξιμο ' επαναφορά git bisect Για να τερματίσει τη διαδικασία.
συμπέρασμα
Σε αυτό το πρακτικό αστάρι GitHub, προσπαθήσαμε να καλύψουμε όλα όσα θα χρειαζόταν να επεξεργαστεί ένας προγραμματιστής, δηλαδή από άποψη ελέγχου έκδοσης και παρακολούθησης.
Στα πρώτα τρία σεμινάρια της σειράς GitHub μάθαμε για δραστηριότητες ελέγχου εκδόσεων, δημιουργία αποθετηρίων, αίτηση τραβήγματος, υποκαταστήματα, κριτικές κώδικα, οργανισμούς και ομάδες, πιρούνι ένα αποθετήριο, ετικέτες, ορόσημα, θέματα, πίνακες έργων, wiki, εκδόσεις, ενοποίηση με την Jira και μερικές κοινές εντολές Git για προγραμματιστές.
Ελπίζουμε πραγματικά ότι όλοι οι προγραμματιστές θα βρουν αυτήν την πρακτική προσέγγιση για τις εντολές GitHub και Git χρήσιμες στα έργα τους.
=> Διαβάστε τη σειρά εκπαίδευσης Easy GitHub.
Συνιστώμενη ανάγνωση
- Εκπαιδευτικό πρόγραμμα ενοποίησης GitLab Jira
- Εντολές Unix: Βασικές και προχωρημένες εντολές Unix με παραδείγματα
- Σελήνιο Ενσωμάτωση με το GitHub με χρήση του Eclipse
- Εκμάθηση ενοποίησης JIRA και SVN
- Git vs GitHub: Εξερευνήστε τις διαφορές με παραδείγματα
- Cucumber Selenium Tutorial: Αγγούρι Java Selenium WebDriver Integration
- Εκπαιδευτικό πρόγραμμα GitHub για προγραμματιστές | Πώς να χρησιμοποιήσετε το GitHub
- Tutorial Unix Pipes: Pipes in Unix Programming