DEV Community

Abhay Singh Kathayat
Abhay Singh Kathayat

Posted on

Committing Changes in Git: A Complete Guide to Git Add, Commit, Messages, and Amending

Committing Changes in Git: A Complete Guide

Committing changes is a crucial part of using Git. It allows you to save the current state of your project and provides a history of modifications that you can reference later. This article will dive into the steps of committing changes in Git, including using git add, making commits with git commit, writing good commit messages, and how to amend commits when needed.


10. Git Add: Staging Changes

The git add command is used to stage changes in your working directory before committing them. This step is essential because Git does not track changes automatically; you must explicitly tell it which changes should be included in the next commit.

How to Use git add

  • Staging a Specific File: To add a specific file to the staging area:
  git add <file-name>
Enter fullscreen mode Exit fullscreen mode

Example:

  git add index.html
Enter fullscreen mode Exit fullscreen mode
  • Staging All Changes: If you want to stage all modified and new files, you can use:
  git add .
Enter fullscreen mode Exit fullscreen mode

This will stage all changes in the current directory and its subdirectories.

  • Staging Only Specific Changes: To add parts of a file (e.g., some changes within a file), use the interactive mode:
  git add -p <file-name>
Enter fullscreen mode Exit fullscreen mode

This allows you to selectively stage chunks of code.

Why Stage Changes?

Staging lets you review and organize your changes before committing. It gives you control over which changes you want to include in a commit and prevents committing unintended changes.


11. Git Commit: Saving Changes to the Repository

Once you’ve staged your changes using git add, you need to commit them to the repository. The git commit command is used to record changes in the local repository's history.

How to Use git commit

  • Making a Commit: To commit your changes, use the following command:
  git commit -m "Your commit message"
Enter fullscreen mode Exit fullscreen mode

Example:

  git commit -m "Added new feature for user authentication"
Enter fullscreen mode Exit fullscreen mode

This will:

  • Record all staged changes.
  • Associate the changes with the commit message you provide.

    • Committing Without a Message: If you forget to include a commit message, Git will open your default text editor to allow you to write the message. If you want to bypass this, always use the -m flag to add a message.
    • Committing All Changes (including unstaged changes): If you want to automatically stage and commit all changes, including both tracked and untracked files, use:
  git commit -a -m "Commit all changes"
Enter fullscreen mode Exit fullscreen mode

This skips the staging process for modified files but still requires new files to be added manually with git add.


12. Git Commit Message: Writing Effective Commit Messages

Commit messages are essential in Git as they provide context for changes, making it easier to understand why a particular change was made. Writing clear, concise, and meaningful commit messages helps both you and your team in the long run.

Structure of a Commit Message

A well-structured commit message typically consists of three parts:

  1. Title: A short description of what the commit does (50-72 characters). Example: "Fix login button styling issue"
  2. Body (optional but recommended for larger commits): Detailed explanation of why and how the change was made. Example:
   The previous login button was misaligned with the rest of the page.
   Adjusted padding and fixed margins to ensure proper alignment.
Enter fullscreen mode Exit fullscreen mode
  1. Footer (optional): Can be used to reference issues or breaking changes. Example:
   Fixes #45
   BREAKING CHANGE: Changes login button behavior
Enter fullscreen mode Exit fullscreen mode

Best Practices for Commit Messages

  • Use the Imperative Mood: Write commit messages as if you're giving an order. For example, "Fix bug" rather than "Fixed bug" or "Fixes bug."
  • Keep It Short and Descriptive: The title should be a brief, concise description of the change. Avoid vague terms like "Update" or "Changes."
  • Explain the "Why": If the change is not self-explanatory, provide a detailed description in the body of the commit message.

13. Amending Commits: Modifying the Last Commit

Sometimes, after committing, you may realize that you forgot to add a file, made a typo in the commit message, or need to make a small change to the last commit. Git allows you to amend the most recent commit using the git commit --amend command.

How to Amend the Last Commit

  • Amend the Commit Message: If you want to change the message of your last commit, use:
  git commit --amend -m "Updated commit message"
Enter fullscreen mode Exit fullscreen mode
  • Amend the Commit by Adding New Changes: If you forgot to add files to your commit, stage them using git add, and then amend the commit:
  git add <file-name>
  git commit --amend --no-edit
Enter fullscreen mode Exit fullscreen mode

The --no-edit flag will keep the original commit message while adding the new staged changes to it.

  • Changing the Content of a Commit: You can modify the content of a commit (both the files and the message) by running the git commit --amend command and then modifying both the staged content and commit message.

Amending Commits and the Commit History

  • Caution: Amending commits should be done with care, especially if the commit has already been pushed to a shared repository. Amending a commit rewrites history, which can cause issues for collaborators. Only amend commits that have not yet been pushed or shared with others.

If you’ve already pushed a commit and need to amend it, you can force-push the changes:

  git push --force
Enter fullscreen mode Exit fullscreen mode

However, be cautious as this can rewrite history in the remote repository and affect your collaborators.


Conclusion

Committing changes is a fundamental part of using Git. By using git add, git commit, and git commit --amend, you can efficiently manage your code and maintain a clean version history. Writing clear and descriptive commit messages ensures that others (and your future self) can understand the rationale behind your changes.

Remember, the commit process isn’t just about saving work—it's about creating a meaningful history that helps you and your team collaborate effectively. If you follow best practices for commit messages and use amending cautiously, you’ll ensure your Git workflow is smooth and efficient.


Top comments (0)