The “git commit” command is used to save changes made to the files in your Git repository. It creates a new commit that represents a snapshot of the project’s state at that specific point in time. Each commit in Git records a set of changes, along with metadata such as the author, committer, timestamp, and commit message.
When you run the “git commit” command, Git opens your configured text editor (such as Vim or Nano) and prompts you to enter a commit message. This message should provide a concise and meaningful description of the changes you are committing. It’s important to write clear and informative commit messages to make it easier for others (including yourself) to understand the purpose and context of the changes.
The “git commit” command operates on the changes that have been staged or added to the Git index. Before running the commit command, you typically use the “git add” command to add specific files or changes to the index. The files in the index represent the changes that will be included in the next commit. Git then creates a new commit object with a unique SHA-1 hash that points to the index and stores it in the repository’s commit history.
The commit command also records the author and committer information, which includes the name and email address associated with your Git configuration. Git uses this information to track who made the commit and to attribute the changes to the correct person.
Additionally, you can provide several options and flags to the “git commit” command to customize its behavior. For example:
- -m message: Allows you to provide the commit message directly on the command line without opening a text editor.
- -a or –all: Automatically stages all modified and deleted files, simplifying the commit process. Note that this only applies to tracked files, not untracked files.
- –amend: Modifies the most recent commit by adding or changing files and updating the commit message. This is useful if you need to make quick changes to the previous commit.
After executing the “git commit” command, the new commit is created and added to the repository’s commit history. It becomes a permanent part of your project’s version history and can be referenced by its unique commit hash.
By convention, each commit should represent a logical unit of work or a specific change. Breaking down your changes into small, self-contained commits helps in reviewing, understanding, and reverting changes when necessary.
It’s important to note that commits are local to your Git repository until you push them to a remote repository. Pushing your commits shares them with others and updates the remote repository with your latest changes.
git commit Command Examples
1. Commit staged files to the repository with a message:
# git commit -m "message"
2. Commit staged files with a message read from a file:
# git commit --file /path/to/commit_message_file
3. Auto stage all modified files and commit with a message:
# git commit -a -m "message"
4. Commit staged files and [S]ign them with the GPG key defined in ~/.gitconfig:
# git commit -S -m "message"
5. Update the last commit by adding the currently staged changes, changing the commit’s hash:
# git commit --amend
6. Commit only specific (already staged) files:
# git commit /path/to/file1 /path/to/file2
7. Create a commit, even if there are no staged files:
# git commit -m "message" --allow-empty