Προγραμματισμός

5 προηγμένες εντολές Git για να ανεβάσετε το παιχνίδι Git

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

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

Απλοποιήστε τα ιστορικά δεσμεύσεων με git rebase

Όταν έχετε δύο κλάδους σε ένα έργο (π.χ. έναν κλάδο ανάπτυξης και έναν κύριο κλάδο), και οι δύο έχουν αλλαγές που πρέπει να συνδυαστούν, το συγχώνευση Η εντολή είναι ο φυσικός και απλός τρόπος ενοποίησής τους. ΕΝΑ συγχώνευση προσθέτει το ιστορικό ανάπτυξης του ενός κλάδου ως δέσμευση συγχώνευσης στο άλλο. Ενώ αυτό διατηρεί και τις δύο ιστορίες με πλήρη λεπτομέρεια, μπορεί να κάνει τη συνολική ιστορία του έργου δύσκολο να ακολουθηθεί. Σε ορισμένες περιπτώσεις, ίσως θέλετε ένα απλούστερο και καθαρότερο αποτέλεσμα.

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

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

Εκκαθάριση συγχωνεύσεων με git merge --squash

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

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

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

Επιταχύνετε τις αναζητήσεις σφαλμάτων με git διχοτομή

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

Όταν ενεργοποιήσετε διχοτομώ (git bisect έναρξη) καθορίζετε δύο σημεία στη βάση κώδικα για να δεσμεύσετε την αναζήτησή σας: ένα σημείο όπου γνωρίζετε ότι τα πράγματα είναι κακά (ΚΕΦΑΛΙ, συνήθως), και εκεί όπου γνωρίζετε ότι τα πράγματα ήταν ακόμα καλά. διχοτομώ θα ελέγξει τη δέσμευση στα μισά μεταξύ της κακής και της καλής, και θα σας αφήσει να εκτελέσετε τις δοκιμές σας. Αυτή η διαδικασία δυαδικής υποδιαίρεσης επαναλαμβάνεται έως ότου εμφανιστεί η δέσμευση που έσπασε τα πράγματα.

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

Επαναλάβετε την εφαρμογή με git cherry-pick

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

Σκεφτείτε git cherry-pick. Σας επιτρέπει να πάρετε μια δεδομένη δέσμευση - οποιαδήποτε δέσμευση, από οποιονδήποτε κλάδο - και να την εφαρμόσετε σε διαφορετικό κλάδο, χωρίς να χρειάζεται να εφαρμόσετε άλλες αλλαγές από το ιστορικό αυτής της δέσμευσης. Αυτό είναι χρήσιμο σε μερικές βασικές περιστάσεις:

  • Έχετε δεσμευτεί σε λάθος κλάδο και θέλετε να το εφαρμόσετε γρήγορα στο σωστό.
  • Θέλετε να εφαρμόσετε μια επιδιόρθωση από έναν κλάδο στον κορμό πριν συνεχίσετε με άλλες εργασίες στον κώδικα κορμού.

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

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

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

Σημειώστε ότι οι υπομονάδες Git λειτουργούν καλύτερα υπό τις ακόλουθες συνθήκες:

  • Οι εν λόγω υπομονάδες δεν αλλάζουν συχνά ή είναι κλειδωμένες σε μια συγκεκριμένη δέσμευση. Οποιαδήποτε δουλειά επί ένα υποσύστημα, αντί με ένα υποσύστημα, θα πρέπει να διαχειρίζεται χωριστά.
  • Όλοι χρησιμοποιούν μια έκδοση του Git που υποστηρίζει υπομονάδες και κατανοεί τα βήματα που απαιτούνται για να συνεργαστεί μαζί τους. Για παράδειγμα, οι κατάλογοι υπομονάδων δεν συμπληρώνονται πάντα αυτόματα με τα περιεχόμενα του αποθετηρίου υπομονάδων. Ίσως χρειαστεί να χρησιμοποιήσετε το git submodule ενημέρωση εντολή στο repo να ενημερώσει τα πάντα.
$config[zx-auto] not found$config[zx-overlay] not found