เขียน Commit message ให้ดีตามรูปแบบของ Conventional commits

Commit message เป็นข้อความที่อธิบายการเปลี่ยนแปลงที่ทำในโค้ด มันมีความสำคัญมากในการติดตามการเปลี่ยนแปลงที่เกิดขึ้นในแต่ละเวอร์ชันของซอฟต์แวร์ ช่วยให้นักพัฒนาคนอื่น ๆ สามารถเข้าใจการเปลี่ยนแปลงที่เกิดขึ้นได้ง่ายขึ้น และสามารถย้อนกลับไปแก้ไขหรืออัปเดตโค้ดได้อย่างถูกต้อง

รูปแบบของ Commit message ที่ดีควรเป็นไปตามรูปแบบของ Conventional Commits (ต่อไปนี้ขอเรียก Conventional) ซึ่งเป็นรูปแบบที่แนะนำโดย Git และ GitHub รูปแบบนี้ช่วยให้ Commit message เข้าใจง่ายและอ่านได้ง่ายขึ้น

รูปแบบของ Conventional มีดังนี้

<type>(<scope>): <คำอธิบายแบบสั้น>

<คำอธิบายแบบยาว>
  • type ระบุประเภทของการเปลี่ยนแปลงที่เกิดขึ้น เช่น fixfeatdocsstylerefactortestchore
  • scope (ละได้) ระบุขอบเขตของการเปลี่ยนแปลง เช่น ชื่อไฟล์หรือชื่อโมดูล
  • short description ระบุคำอธิบายสั้น ๆ ของการเปลี่ยนแปลงที่เกิดขึ้น
  • long description (ละได้) ระบุคำอธิบายรายละเอียดของการเปลี่ยนแปลงที่เกิดขึ้น

Commit type มีกี่แบบ อะไรบ้าง

ตามรูปแบบของ Conventional มีประเภทของการเปลี่ยนแปลงทั้งหมด 11 แบบ ได้แก่

  • feat (feature) : เพิ่มคุณสมบัติใหม่
  • fix (bug fix) : แก้ไขข้อผิดพลาด
  • style (styles) : การเปลี่ยนแปลงที่ไม่ส่งผลต่อการทำงานของโค้ด (ช่องว่าง การจัดรูปแบบ เครื่องหมายอัฒภาคที่หายไป ฯลฯ)
  • docs (documentation) : อัปเดตเอกสาร
  • refactor (refactoring) : ปรับปรุงโค้ดโดยไม่เพิ่มหรือเปลี่ยนแปลงคุณสมบัติ
  • perf (performance) : ปรับปรุงประสิทธิภาพ
  • test (tests) : เพิ่มหรือปรับปรุงการทดสอบ
  • build (builds) : การเปลี่ยนแปลงระบบ Build หรือ Dependencies ต่างๆ (npm, gulp)
  • ci (Continuous Integrations) : ปรับปรุง CI ไฟล์ หรือ script ที่เกี่ยวข้องกับ CI (Gitlab-ci, Travis, Circle, BrowserStack, SauceLabs)
  • chore (Chores) : การเปลี่ยนแปลงที่ไม่เกี่ยวข้องกับ src หรือไฟล์ Test
  • revert (Reverts) : การย้อนกลับไป Commit ก่อนหน้า

ตัวอย่าง Commit message

fix(my-file): fix a bug

This commit fixes a bug in the `my-file` file.
---
feat(my-module): add a new feature

This commit adds a new feature to the `my-module` module.
---
docs(README): update the documentation

This commit updates the documentation in the `README` file.

ประโยชน์ของการใช้

  • ทำให้ Commit message เข้าใจง่ายและอ่านได้ง่ายขึ้น
  • ช่วยในการติดตามการเปลี่ยนแปลงที่เกิดขึ้นในแต่ละเวอร์ชันของซอฟต์แวร์
  • ช่วยให้นักพัฒนาคนอื่น ๆ สามารถเข้าใจการเปลี่ยนแปลงที่เกิดขึ้นได้ง่ายขึ้น
  • สามารถย้อนกลับไปแก้ไขหรืออัปเดตโค้ดได้อย่างถูกต้อง

หากใครเป็นนักพัฒนาซอฟต์แวร์ แนะนำให้ใช้รูปแบบของ Conventional ในการเขียน commit message จะช่วยให้ commit message ของเราเข้าใจง่ายและอ่านได้ง่ายขึ้น เป็นประโยชน์ต่อทั้งตัวเราเองและนักพัฒนาคนอื่น ๆ

อ่านเพิ่มเติม: https://www.conventionalcommits.org/th/v1.0.0/