Quy tắc viết commit message chuẩn và sao cho trở nên “Pro” hơn
Hôm nay, mình muốn chia sẻ với các bạn một chủ đề liên quan đến công việc lập trình rất quan trọng mà lại ít được các thầy cô dạy đó là việc viết git commit message như thế nào cho đúng, chuẩn. Điều mà có các lập trình viên như chúng mình khi làm việc cùng team mai sau sẽ dùng hằng ngày luôn 😄
I. Mục đích Commit message là gì ?
- Commit message có mục đích chính là cung cấp thông tin rõ ràng về từng thay đổi trong dự án, giúp cho các thành viên trong team thông qua đó có thể hiểu được như lý do thay đổi, nội dung thay đổi là gì, hỗ trợ kiểm tra và bảo trì lỗi dễ dàng hơn
II. Các lỗi thường gặp khi viết commit message
- Commit message không rõ ràng: Viết chung chung như “update code”, “fix bug” mà không cung cấp thông tin cụ thể
- Quá dài hoặc quá ngắn : Commit message quá dài gây khó đọc, quá ngắn thì không đủ thông tin
- Không tuân thủ theo quy tắc chuẩn: Viết commit message không theo cấu trúc chuẩn làm cho lịch sử commit trở nên lộn xộn, khó tra cứu
- Sai chính tả
- Không liên kết với issue : Không ghi rõ commit này liên quan đến task hay issue nào ➡️ khó theo dõi
III. Bảy ( 07 ) quy tắc về viết nội dung của commit message
- Tách tiêu đề và phần thân ( nội dung commit ) bằng một dòng trắng
- Tiêu đề giới hạn 50 ký tự
- Viết hoa chữ cái ở dòng tiêu đề
- Không kết thúc tiêu đề bằng dấu chấm
- Sử dụng câu mệnh lệnh trong tiêu đề
- Giới hạn tôi đa 72 ký tự ở phần nội dung commit
- Trả lời các câu hỏi điều gì ( What ), tại sao ( Why ) và như thế nào ( How ) ở phần nội dung commit
IV. Cách viết commit message chuẩn
< Loại commit (must) > [phạm vi (optional)]: < Mô tả commit (must) >
[Body (optional)]
[Footer (optional)]
---------------------------------------------------------------------------
* Must : Bắt buộc phải có
* Optional : Có thể có hoặc không
Giờ hãy đi chi tiết hơn về các thành phần trong commit message nhé !
1. Loại commit ( must ) : là thành phần không thể thiếu của một commit message, để xác định rõ commit đó có mục địch là gì. Các loại commit bao gồm:
feature
: tính năng mớibugfix
: sửa lỗi cho hệ thốngrefactor
: sửa code nhưng không thêm feature và cũng không fix bugdocs
: thêm/ thay thế documentchore
: những sửa đổi nhỏ nhặt không liên quan đến codestyle
: những thay đổi không làm thay đổi ý nghĩa của codeperf
: cải thiện performance ( tốc độ xử lý)vendor
: cập nhật version cho các package, dependencies 2. Phạm vi ( optional ) : cũng dùng để phân loại commit, nhưng chi tiết hơn về ý nghĩa một chút, trả lời cho câu hỏi : commit này thêm mới chức năng gì, fix chức năng gì ? VD : feature( login_sso ) : bugfix( user_profile )
3. Mô tả commit ( must ) : Mô tả ngắn về những thay đổi trong commit nhưng phải xúc tích và đầy đủ ý nghĩa
4. Body ( optional ) : Có những trường hợp commit của bạn thay đổi khá lớn và phần mô tả đã không còn phù hợp để viết thêm nữa, thì những mô tả dài và chi tiết hơn sẽ viết ở phần body
5. Foooter ( optional ) : Một số các thông tin mở rộng như ID Task, issue là gì ,….
✅️ Dưới đây là một số ví dụ giúp bạn hình dung rõ hơn thế nào là một COMMIT MESSAGE TIÊU CHUẨN nhé
TH1 : Ông Hưng hôm nay đã thêm mới tính năng đổi mật khẩu của tài khoản
Kiểu đầy đủ
feature (user_profile): Thêm mới tính năng đổi mật khẩu cho tài khoản người dùng
[Yêu cầu khi đổi có mật khẩu mới khác hoàn toàn mật khẩu cũ, phân biệt chữ cái hoa, thường]
[JIRA-HD661]
Kiểu rút gọn
feature: Thêm mới tính năng đổi mật khẩu cho tài khoản người dùng
[JIRA-HD661]
TH2 : Anh Sơn giám đốc yêu cầu sửa lỗi sai địa chỉ văn phòng
Kiểu đầy đủ
bugfix (landing_page): Sửa lỗi sai địa chỉ văn phòng
[Đổi địa chỉ văn phòng từ TP.HCM sang Hà Nội]
[Anh Sơn giám đốc yêu cầu]
Kiểu rút gọn
bugfix: Sửa lỗi sai địa chỉ văn phòng
[Anh Sơn giám đốc yêu cầu]
⛔️ Ví dụ về cách COMMIT MESSAGE KHÔNG CHUẨN , đừng làm thế này các bạn nhé ⛔️ !
TH1: Anh Long fix lỗi tìm kiếm theo tiêu đề sách không ra kết quả
fix lỗi
- Lỗi ở đây là : không có loại commit, mô tả commit không rõ ràng
TH2: Bạn Quân refactor code màn hình thêm mới quốc gia
refactoer (country_page) : Refactor code, bổ sung file .css, bổ sung file .js, đổi tên folder, xoá code không cần thiết, thêm if else cho trường hợp nếu như không có tên thì sẽ nhảy ra lỗi nếu có tên thì sẽ tiếp tục, một số trường hợp khác thì sẽ sang trang thứ 2 thay vì trang thứ nhất như hiện tại
- Lỗi ở đây là: sai chính tả , mô tả commit quá dài
V. Tổng kết
Các quy tắc về commit message tui chỉ là một phần rât nhỏ trong việc lập trình, nhưng bằng việc tuân thủ các quy tắc, trong một số trường hợp, nó sẽ giúp cho bạn đỡ tốn hàng giờ đồng hồ để tìm lỗi, cũng như giúp cho dự án của bạn trở nên chuyên nghiệp, dễ dàng bào trì và phát triển hơn.
Mong rằng thông qua những gì mình vừa chia sẻ, sẽ giúp cho các bạn sẽ hiểu hơn về việc commit message. Và hãy áp dụng ngay cho bản thân mình để thấy sự thay đổi nào 😄
Xin chân thành cảm ơn các bạn đã đón xem .
All rights reserved