# How to write good commit message in Git?

Writing clear and informative commit messages is crucial for maintaining a clean and understandable version history in Git. A well-crafted commit message helps you and your collaborators understand the purpose and context of each change. Here are some guidelines for writing good commit messages:

### **1\. Keep It Short and Descriptive:**

* **Limit the subject line to 50 characters**: The subject line should be a concise summary of the change.
    
* **Use the imperative mood**: Start with a verb, as if giving a command. For example, "Add feature," "Fix bug," or "Update documentation."
    

### **2\. Provide Context:**

* **Explain why, not just what**: Briefly explain the reasoning behind the change in the commit body. This helps others understand the motivation behind the code modifications.
    
* **Reference relevant issues or tickets**: If there's a related issue or task, include a reference to it. For example, "Closes #123" or "Fixes #456."
    

### **3\. Break Down Changes:**

* **Make small, atomic commits**: Each commit should represent a single logical change. Avoid bundling unrelated changes in a single commit.
    
* **Separate concerns**: If your commit includes changes to multiple files, make sure they are related. If not, consider splitting them into separate commits.
    

### **4\. Be Mindful of Formatting:**

* **Use proper grammar and punctuation**: Treat your commit messages like any other piece of writing.
    
* **Capitalize the subject line**: Follow standard capitalization rules.
    
* **Avoid unnecessary details**: Save the details for the commit body; the subject line should be a high-level summary.
    

### **5\. Be Explicit About Changes:**

* **Clearly mention what changed**: Provide enough information for someone to understand the change without having to look at the code.
    
* **Include relevant details**: If applicable, mention specific files, functions, or modules affected by the commit.
    

### **Example:**

```plaintext
Short (50 chars or less) and descriptive
Brief explanation in the body, if necessary.

Fixes #123

Details about changes in bullet points:
- Explain one
- Explain two

Additional context or information, if needed.
```

### **Bad Example:**

```plaintext
Changed stuff
```

### **Good Example:**

```plaintext
Add user authentication feature

This commit introduces a new feature for user authentication,
enabling users to securely log in and manage their accounts.

Closes #456

- Added login and registration routes
- Implemented JWT token authentication
- Updated user model to include hashed passwords
- Improved error handling for authentication failures
```

By following these guidelines, you contribute to a more understandable and maintainable version history, making it easier for you and your team to collaborate effectively.
