Πώς να γράψετε μηνύματα Good Commit: Ένας πρακτικός οδηγός Git

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

Πρόσφατα στο Hashnode ρώτησα, "Ποια σύμβαση μηνυμάτων δέσμευσης χρησιμοποιείτε στην εργασία;" και έλαβα μερικές καταπληκτικές απαντήσεις με τους χρήστες να εξηγούν τις συμβάσεις που χρησιμοποιούν στην εργασία και για τα προσωπικά τους έργα.

Ποια σύμβαση μηνυμάτων δέσμευσης χρησιμοποιείτε στην εργασία;

από @hashnode //t.co/HewCBxRCbr

- BOLAJI @ (@iambolajiayo) 25 Νοεμβρίου 2019

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

PS: Αυτό το άρθρο δημοσιεύτηκε για πρώτη φορά στο blog μου εδώ.

Εισαγωγή στον έλεγχο έκδοσης με το Git

Το λογισμικό ελέγχου εκδόσεων αποτελεί ουσιαστικό μέρος των σύγχρονων πρακτικών προγραμματιστών λογισμικού.

Μέχρι στιγμής, το Git είναι το πιο διαδεδομένο σύστημα ελέγχου εκδόσεων στον κόσμο. Πρόκειται για ένα διανεμημένο και ενεργά συντηρημένο έργο ανοιχτού κώδικα που αναπτύχθηκε αρχικά το 2005 από τον Linus Torvalds, τον διάσημο δημιουργό του πυρήνα του λειτουργικού συστήματος Linux.

Νέο στο Git; Ελέγξτε τον επίσημο οδηγό έναρξης ή αυτή τη διαφάνεια από μια προηγούμενη ομιλία που έδωσα.

Τι είναι ένα μήνυμα δέσμευσης;

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

Επιλογές δέσμευσης

Αυτή η επιλογή ορίζει το μήνυμα της δέσμευσης.

git add static/admin/config.yml git commit -m "Setup multiple roles for netlify-cms git gateway" 
  • -α ή - όλα

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

git commit -a -m "Add a new role for netlify-cms git gateway" 
  • --τροποποιώ

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

git add . git commit --amend -m "Update roles for netlify-cms git gateway" 

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

Μπορείτε να πείτε, "Είναι απλώς ένα προσωπικό έργο." Ναι, εργάζεστε μόνος τώρα, αλλά τι συμβαίνει όταν εργάζεστε με μια ομάδα ή συνεισφέρετε σε ανοιχτό κώδικα;

Ένα καλά σχεδιασμένο μήνυμα Git komitmen είναι ο καλύτερος τρόπος για να επικοινωνήσετε το πλαίσιο σχετικά με μια αλλαγή σε άλλους προγραμματιστές που εργάζονται σε αυτό το έργο, και μάλιστα στον μελλοντικό σας εαυτό.

Έχετε δοκιμάσει ποτέ να εκτελέσετε git logένα από τα παλιά σας έργα για να δείτε τα "περίεργα" μηνύματα δεσμεύσεων που έχετε χρησιμοποιήσει από την έναρξή του; Μπορεί να είναι δύσκολο να καταλάβετε γιατί κάνατε κάποιες αλλαγές στο παρελθόν και θα θέλατε να διαβάσετε αυτό το άρθρο νωρίτερα :).

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

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

Πριν από τώρα, χρησιμοποίησα μόνο git commit -m "Fix X to allow Y to use Z"για τα προσωπικά μου έργα μόνο με ένα θέμα και χωρίς επιπλέον περιγραφή. Αυτό είναι ιδανικό για μικρές και σαφείς διορθώσεις όπως git commit -m "Fix typo in README.md, αλλά σε περιπτώσεις πιο εκτεταμένων αλλαγών, θα πρέπει να προσθέσετε μερικές επιπλέον λεπτομέρειες.

Μέθοδος επεξεργαστή

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

Για να διαμορφώσετε τον "προεπιλεγμένο" επεξεργαστή σας:

git config --global core.editor nano 

Αυτό θα ρυθμίσει το Git ώστε να χρησιμοποιεί το nano ως προεπιλεγμένο πρόγραμμα επεξεργασίας. Αντικαταστήστε το "nano" με "emacs", "vim" ή ό, τι και αν προτιμάτε.

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

Μέθοδος γραμμής εντολών

git commit -m "Subject" -m "Description..." 

Η πρώτη -mεπιλογή είναι το θέμα (σύντομη περιγραφή) και η επόμενη είναι η εκτεταμένη περιγραφή (σώμα).

Πώς να γράψετε καλά μηνύματα δέσμευσης

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

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

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

Εδώ είναι ένα εξαιρετικό πρότυπο ενός καλού μηνύματος δέσμευσης που γράφτηκε αρχικά από τον Tim pope

Capitalized, short (50 chars or less) summary More detailed explanatory text, if necessary. Wrap it to about 72 characters or so. In some contexts, the first line is treated as the subject of an email and the rest of the text as the body. The blank line separating the summary from the body is critical (unless you omit the body entirely); tools like rebase can get confused if you run the two together. Write your commit message in the imperative: "Fix bug" and not "Fixed bug" or "Fixes bug." This convention matches up with commit messages generated by commands like git merge and git revert. Further paragraphs come after blank lines. - Bullet points are okay, too - Typically a hyphen or asterisk is used for the bullet, followed by a single space, with blank lines in between, but conventions vary here - Use a hanging indent If you use an issue tracker, add a reference(s) to them at the bottom, like so: Resolves: #123 

Φαίνεται υπέροχο, έτσι; Δείτε πώς μπορείτε να κάνετε και το δικό σας υπέροχο:

  1. Προσδιορίστε τον τύπο δέσμευσης:
  • feat: Η νέα δυνατότητα που προσθέτετε σε μια συγκεκριμένη εφαρμογή
  • fix: A bug fix
  • style: Feature and updates related to styling
  • refactor: Refactoring a specific section of the codebase
  • test: Everything related to testing
  • docs: Everything related to documentation
  • chore: Regular code maintenance.[ You can also use emojis to represent commit types]
  1. Separate the subject from the body with a blank line
  2. Your commit message should not contain any whitespace errors
  3. Remove unnecessary punctuation marks
  4. Do not end the subject line with a period
  5. Capitalize the subject line and each paragraph
  6. Use the imperative mood in the subject line
  7. Use the body to explain what changes you have made and why you made them.
  8. Do not assume the reviewer understands what the original problem was, ensure you add it.
  9. Do not think your code is self-explanatory
  10. Follow the commit convention defined by your team

Conclusion

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

Θέλετε να μάθετε περισσότερα για το Git και να γίνετε επαγγελματίας "ελεγκτής έκδοσης"; Δείτε αυτούς τους εξαιρετικούς πόρους:

  • //try.github.io/
  • //git-scm.com/book/en/v2
  • //www.git-tower.com/learn/
  • //learngitbranching.js.org/
  • //github.com/commitizen/cz-cli