2023-08-30 16:29 — 4 phút đọc

Làm sao để viết git commit message tốt hơn?

#document#how-to


Giới thiệu

Viết message cho commit trên git cũng quan trọng như việc bạn viết comment cho code vậy. Nó giúp cho người khác hiểu được bạn đã làm gì trong commit này. Nó cũng giúp cho bạn khi bạn quay lại xem lại commit này thì bạn cũng hiểu được mình đã làm gì. Nếu bạn làm việc nhóm thì việc viết commit message càng quan trọng hơn nữa. Vì khi bạn push code lên thì người khác sẽ xem lại commit message của bạn để hiểu bạn đã làm gì. Nếu commit message của bạn không rõ ràng thì người khác sẽ khó hiểu và có thể sẽ phải hỏi bạn. Điều này sẽ làm mất thời gian của bạn và người khác.

Có nhiều cách để viết commit message, tuy nhiên tôi thấy có một cách viết commit message rất hay và dễ hiểu. Đó là cách viết commit message theo chuẩn của AngularJS. Trong bài viết này tôi sẽ giới thiệu về chuẩn viết commit message này và cách sử dụng nó.

Tiêu chuẩn viết commit message theo chuẩn AngularJS

Chuẩn viết commit message theo AngularJS được giới thiệu trong AngularJS Git Commit Message Conventions

Mục tiêu

  • Cho phép tạo ra lịch sử commit message dễ đọc.
  • Cho phép tạo ra tự động changelog.
  • Cung cấp hướng dẫn viết commit message cho người mới tham gia dự án.

Format

Một commit message bao gồm 3 phần: header, body và footer. Giữa các phần cách nhau bởi một dòng trống.

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

Header bao gồm type, scope và subject.

Type

Type có thể là một trong các giá trị sau:

  • feat: Thêm một chức năng mới cho người dùng, không phải là một fix.
  • fix: Sửa một lỗi cho người dùng, không phải là một chức năng mới.
  • docs: Thay đổi tài liệu.
  • style: Thay đổi không ảnh hưởng đến code (ví dụ: thay đổi khoảng trắng, định dạng, …).
  • refactor: Thay đổi code không phải là fix và không phải là thêm chức năng.
  • perf: Thay đổi code để cải thiện hiệu năng.
  • test: Thay đổi code liên quan đến việc viết test.
  • chore: Thay đổi code không phải là thay đổi code ứng dụng hoặc test (ví dụ: cấu hình build, cấu hình CI, …).
Scope

Scope bao gồm các phần của ứng dụng bị ảnh hưởng bởi commit này. Nó có thể là một phần của ứng dụng hoặc là một module của ứng dụng. Nếu commit ảnh hưởng đến nhiều phần của ứng dụng thì scope có thể là *. Nếu không có scope thì bạn có thể bỏ qua nó.

Subject

Subject là một câu mô tả ngắn gọn về commit. Nó không có dấu chấm ở cuối câu. Nó cũng không được viết hoa chữ cái đầu tiên.

Body

Body là một câu mô tả chi tiết về commit. Nó có thể bao gồm nhiều dòng. Mỗi dòng không quá 72 ký tự. Nó cũng có thể có các dòng trống.

Footer bao gồm các thông tin về các thay đổi không tạo ra code, ví dụ như các thay đổi về tài liệu, các thay đổi về cấu hình, …

Ví dụ

feat(*): add new feature

add feature A

BREAKING CHANGE: add feature B

Closes #123
fix(*): fix bug

fix bug A

BREAKING CHANGE: fix bug B

Closes #123
docs(*): update README.md

update README.md

Closes #123
style(*): fix whitespace

fix whitespace

Closes #123
refactor(*): refactor code

refactor code

Closes #123
perf(*): improve performance

improve performance

Closes #123
test(*): add unit test

add unit test

Closes #123
chore(*): add build script

add build script

Closes #123
feat(*): add new feature

add feature A

BREAKING CHANGE: add feature B

Closes #123

Summary

Trên đây là cách viết commit message theo chuẩn của AngularJS. Tôi thấy cách viết này rất hay và dễ hiểu. Nếu bạn chưa biết cách viết commit message thì bạn có thể tham khảo cách viết này. Nếu bạn đã biết cách viết commit message thì bạn có thể tham khảo cách viết này để cải thiện cách viết của mình.

Tham khảo


aitu avatar

Hi! Tôi là Tuyên — Hiện tại tôi đang làm Software Architect, Senior developer tại một công ty nhỏ ở Hà Nội. Tôi cảm thấy thích thú, đam mê, yêu thích với việc viết lách và chia sẻ những kiến thức mà tôi biết. Hãy đọc nhiều hơn tại blogs và tới about để biết thêm về tôi nhé.