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

27 βασικές συμβουλές για τους χρήστες του Git και του GitHub

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

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

Το Git είναι ένα σύστημα ελέγχου κατανεμημένης έκδοσης, που γράφτηκε αρχικά από τον Linus Torvalds το 2005 για και με τη βοήθεια της κοινότητας του πυρήνα Linux. Δεν είμαι εδώ για να σας πουλήσω στο Git, οπότε θα σας αφήσω το άπειρο για το πόσο γρήγορο και μικρό και ευέλικτο και δημοφιλές είναι, αλλά θα πρέπει να γνωρίζετε ότι όταν κλωνοποιείτε ένα αποθετήριο Git ("repo" για συντομία) , λαμβάνετε ολόκληρο το ιστορικό εκδόσεων στον υπολογιστή σας, όχι μόνο ένα στιγμιότυπο από έναν κλάδο ταυτόχρονα.

Το Git ξεκίνησε ως εργαλείο γραμμής εντολών, που ταιριάζει στην καταγωγή του στην κοινότητα πυρήνα Linux. Μπορείτε ακόμα να χρησιμοποιήσετε τη γραμμή εντολών Git, αν θέλετε, αλλά δεν χρειάζεται. Συγκεκριμένα, εάν χρησιμοποιείτε το GitHub ως κεντρικό υπολογιστή σας, μπορείτε να χρησιμοποιήσετε τον δωρεάν υπολογιστή-πελάτη GitHub Desktop σε Windows ή Mac. Από την άλλη πλευρά, η γραμμή εντολών Git θα λειτουργεί για οποιονδήποτε κεντρικό υπολογιστή και έρχεται προεγκατεστημένη στα περισσότερα συστήματα Mac και Linux.

Μόνο εσείς μπορείτε να αποφασίσετε εάν είστε πιο άνετοι χρησιμοποιώντας τη γραμμή εντολών ή έναν εγγενή πελάτη με γραφικό περιβάλλον εργασίας χρήστη. Αν σας αρέσει ένα GUI, εκτός από τον πελάτη GitHub (Windows και Mac), ίσως θελήσετε να λάβετε υπόψη το SourceTree (Windows και Mac, δωρεάν), το TortoiseGit (μόνο για Windows, δωρεάν) και το Gitbox (μόνο για Mac, 14,99 $). Ή μπορείτε να χρησιμοποιήσετε ένα πρόγραμμα επεξεργασίας ή IDE που υποστηρίζει το Git εσωτερικά (βλ. Συμβουλή αρ. 11).

Συμβουλή Git / GitHub No. 1: Κλωνοποιήστε σχεδόν τα πάντα

Υπάρχουν πολλά ενδιαφέροντα έργα διαθέσιμα από το GitHub και άλλα δημόσια αποθετήρια Git τα οποία μπορείτε να κλωνοποιήσετε ελεύθερα στον δικό σας υπολογιστή. Γιατί θα θέλατε να το κάνετε αυτό; Ένας λόγος είναι να μάθετε κάτι σχετικά με το στυλ κωδικοποίησης, την πρακτική και τα εργαλεία σε μια γλώσσα ενδιαφέροντος, συμπεριλαμβανομένου του στυλ σχολιασμού δεσμεύσεων καταγραφής (βλ. Συμβουλή αρ. 4). Ένας δεύτερος λόγος είναι να μάθετε πώς ένα συγκεκριμένο έργο επιτυγχάνει τους στόχους του. Ένας τρίτος λόγος, εάν και οι δύο άδειες σας επιτρέψουν να το κάνετε και να έχετε νόημα για τους σκοπούς σας, θα ήταν να ενσωματώσετε το έργο στη δική σας προσπάθεια ή προϊόν. Ελέγξτε ξανά την άδεια, παρεμπιπτόντως, ώστε να μην αντιμετωπίσετε προβλήματα συμμόρφωσης αργότερα.

Ο ορισμός του git κλώνος από τη σελίδα εγχειριδίων:

Κλωνοποιεί ένα αποθετήριο σε έναν νέο κατάλογο, δημιουργεί κλάδους απομακρυσμένης παρακολούθησης για κάθε κλάδο στο κλωνοποιημένο αποθετήριο (ορατό χρησιμοποιώντας git branch -r), και δημιουργεί και ελέγχει έναν αρχικό κλάδο που διαμορφώνεται από τον ενεργό κλάδο του κλωνοποιημένου αποθετηρίου.

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

Συμβουλή Git / GitHub No. 2: Συχνά τραβήξτε

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

Συμβουλή Git / GitHub No. 3: Δέχεστε νωρίς και συχνά

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

Ο ορισμός του git δεσμεύω από τη σελίδα εγχειριδίων:

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

Συμβουλή Git / GitHub No. 4: Σχολιάστε τις δεσμεύσεις σας όπως θα κάνατε οι άλλοι να σχολιάσουν τις δικές τους

Υπάρχουν 10 είδη κωδικοποιητών: Εκείνοι που σχολιάζουν τις δεσμεύσεις τους και εκείνοι που δεν το κάνουν. (Παλιό αστείο. Συμβουλή: Τι βάση χρησιμοποιώ;)

Ομολογώ ελεύθερα ότι είμαι αυτοκόλλητος για καλά μηνύματα καταγραφής. Δημιούργησα τα αποθετήρια μου για να απαιτήσω μηνύματα για κάθε δέσμευση και ήμουν γνωστό ότι στέλνω ενοχλημένα μηνύματα αργά το βράδυ όταν διαπραγματεύομαι τη γη με αρχεία καταγραφής της σειράς "xx" Εάν είστε το είδος προγραμματιστή που πιστεύει (1) ο κώδικας πρέπει να μιλήσει από μόνος του και (2) τα in-line σχόλια είναι πολύ πιο σημαντικά από τα αρχεία καταγραφής αλλαγών, δοκιμάστε να κλωνοποιήσετε ένα αποθετήριο που δεν έχετε ξαναδεί και να προσδιορίσετε το πρόσφατη δέσμευση που μπορεί να προκάλεσε το τελευταίο ζήτημα που δημοσιεύτηκε χωρίς να διαβάσει όλο τον κώδικα. Όπως μπορείτε να δείτε, τα ακριβή αρχεία καταγραφής δεσμεύσεων είναι διπλά και καλά.

Συμβουλή Git / GitHub No. 5: Πιέστε κατά τη δοκιμή των αλλαγών σας

Το χειρότερο σφάλμα που σχετίζεται με το Git είχα ποτέ την ατυχία να μάθω ότι συνέβη όταν μια εταιρεία εξωτερικής ανάθεσης άλλαξε από το Subversion, αλλά δεν εκπαίδεψε τους προγραμματιστές της για τη διαφορά μεταξύ του κατανεμημένου ελέγχου πηγής και του κεντρικού ελέγχου πηγής. Περίπου ένα μήνα αργότερα, το έργο ανέπτυξε περίεργα σφάλματα που κανείς δεν φαίνεται να εντοπίζει. Στις καθημερινές καθυστερημένες συναντήσεις, οι προγραμματιστές που ήταν υπεύθυνοι για τον τομέα της εφαρμογής που είχε κακή συμπεριφορά θα διαμαρτυρηθούν, "Το έκανα πριν από δύο εβδομάδες!" ή κατηγορήστε έναν άλλο προγραμματιστή ότι δεν ενοχλεί να τραβήξει τις αλλαγές που είχαν ελέγξει τόσο προσεκτικά.

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

Συμβουλή Git / GitHub No. 6: Διακλαδώστε ελεύθερα

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

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

Συμβουλή Git / GitHub No. 7: Συγχωνεύστε προσεκτικά

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

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

Βλέπε επίσης συμβουλή αρ. 8.

Ακόμα κι αν όλα πηγαίνουν νότια κατά τη διάρκεια ενός συγχώνευση, δεν έχετε:

Εάν δοκιμάσατε μια συγχώνευση που οδήγησε σε περίπλοκες διενέξεις και θέλετε να ξεκινήσετε ξανά, μπορείτε να κάνετε ανάκτηση με git merge — abort.

Η επόμενη εντολή για συγχώνευση είναι συνήθως git mergetool, υποθέτοντας ότι θέλετε να χρησιμοποιήσετε ένα GUI για συγχώνευση. Εάν προτιμάτε τη μέθοδο παλιού σχολείου, μπορείτε να επεξεργαστείτε τα αρχεία που έρχονται σε διένεξη με τον αγαπημένο σας επεξεργαστή προγραμματισμού, καταργώντας πλήρως το <<<<<<<, =======, και >>>>>>> γραμμές, αποθηκεύστε τα αναθεωρημένα αρχεία και git add κάθε αρχείο που διορθώσατε.

Συμβουλή Git / GitHub No. 8: Κρατήστε πριν από την εναλλαγή των κλάδων

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

Βρίσκεστε, με τρία αρχεία δεσμευμένα για κυκλοφορία, και ένα τέταρτο αρχείο σε κατάσταση αλλαγής αλλά δεν λειτουργεί. (Ο κατάσταση git Η εντολή θα σας πει όλα αυτά εάν δεν θυμάστε που βρισκόσασταν.) Ξαφνικά πρέπει να εργαστείτε σε μια διόρθωση σφαλμάτων σε μια έκδοση παραγωγής. Πρέπει να αλλάξετε κλάδους πριν, αλλά δεν μπορείτε. Ο κατάλογος εργασίας σας είναι βρώμικος και έχετε δύο ώρες εργασίας που δεν θέλετε να χάσετε.

Εισαγω git stash. Βόλα! Τώρα έχετε αποθηκεύσει όλες τις αλλαγές σας σε έναν κλάδο WIP (σε εξέλιξη) και μπορείτε να μεταβείτε στον κλάδο παραγωγής από τον καθαρό κατάλογό σας. Όταν τελειώσετε με αυτό, επιστρέψτε στο σημείο που ήσασταν ισχύουν git stash.

Συμβουλή Git / GitHub Νο. 9: Χρησιμοποιήστε θέματα για να μοιραστείτε αποσπάσματα και πάστες

Τα "gist" του GitHub - κοινόχρηστα αποσπάσματα κώδικα - δεν είναι μια λειτουργία Git, αλλά χρησιμοποιούν το Git. Όλες οι κύριες σελίδες είναι αποθετήρια Git και το GitHub Gist διευκολύνει την κοινή χρήση τους. Μπορείτε να κάνετε αναζήτηση στο Gist για δημόσια θέματα κατά θέμα, γλώσσα προγραμματισμού, διχαλωτή κατάσταση και κατάσταση με αστέρι. Μπορείτε επίσης να δημιουργήσετε μυστικά θέματα και να τα μοιραστείτε μέσω URL.

Συμβουλή Git / GitHub No. 10: Εξερευνήστε το GitHub

Πολλά ενδιαφέροντα έργα ανοιχτού κώδικα έχουν αποθετήρια στο GitHub. Το Explore GitHub παρέχει μια διεπαφή περιήγησης για να βρείτε μερικά από αυτά, αλλά κυρίως είναι πιο εύκολο να πληκτρολογήσετε μερικά γράμματα του ονόματος του έργου στο πλαίσιο αναζήτησης για να βρείτε τα repos του. Για παράδειγμα, πληκτρολογήστε jq ή πίσω ή ang για να βρείτε τρία από τα κύρια πλαίσια JavaScript ανοιχτού κώδικα.

Συμβουλή Git / GitHub No. 11: Συμβάλλετε σε έργα ανοιχτού κώδικα

Εφόσον περιηγείστε σε έργα ανοιχτού κώδικα, γιατί να μην συνεισφέρετε σε αυτά; Δεν είναι τόσο δύσκολο όσο νομίζετε και θα μάθετε πολλά. Για παράδειγμα, θα μπορούσατε να κλωνοποιήσετε το έργο jquery / jquery (jQuery Core) και να περιηγηθείτε στο README.MD. Κοντά στην κορυφή θα δείτε:

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

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

Κατανοήστε τη διαφορά ανάμεσα στο να είστε συνεισφέρων και να είστε συνεργάτης. Ένας συνεργάτης έχει υπογράψει τις απαιτούμενες συμφωνίες και έχει διαθέσει μια συνεισφορά στο έργο. Ένας επιμελητής έχει την εξουσία να δεσμεύει πραγματικά την προσφερόμενη συνεισφορά στο αποθετήριο του έργου. Επειδή θα υπάρξει καθυστέρηση ενώ ένας committer δοκιμάζει τη συνεισφορά σας και δεν θέλετε να συνδέσετε το κύριο υποκατάστημα σας, θα πρέπει να κάνετε τις αλλαγές σας σε άλλο υποκατάστημα (βλ. Συμβουλή αρ. 6) προτού στείλετε ένα αίτημα έλξης (βλ. Συμβουλή αριθ. 16).