Git Commit
What is a Commit?
A commit is like a save point in your project.
It records a snapshot of your files at a certain time, with a message describing what changed.
You can always go back to a previous commit if you need to.
Here are some key commands for commits:
git commit -m "message"- Commit staged changes with a messagegit commit -a -m "message"- Commit all tracked changes (skip staging)git log- See commit history
How to Commit with a Message (-m)
To save your staged changes, use git commit -m "your message":
Example
git commit -m "First release of Hello World!"
[main (root-commit) 712c39a] First release of Hello World!
3 files changed, 17 insertions(+)
create mode 100644 README.md
create mode 100644 bluestyle.css
create mode 100644 index.html
Try it Yourself »
Always write a clear message so you and others can understand what changed.
Commit All Changes Without Staging (-a)
You can skip the staging step for already tracked files with git commit -a -m "message".
This commits all modified and deleted files, but not new/untracked files.
Example
git commit -a -m "Quick update to README"
[main bbb2392] Quick update to README
1 file changed, 1 insertion(+)
Try it Yourself »
Warning: Skipping the staging step can make you include unwanted changes. Use with care.
Note: git commit -a does not work for new/untracked files. You must use git add <file> first for new files.
What happens if you try to commit a new file with -a?
git commit -a -m "Try to commit new file"
On branch main
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.html
nothing added to commit but untracked files present (use "git add" to track)
Try it Yourself »
Write Multi-line Commit Messages
If you just type git commit (no -m), your default editor will open so you can write a detailed, multi-line message:
Example
git commit
Write a short summary on the first line, leave a blank line, then add more details below.
Commit Message Best Practices:
- Keep the first line short (50 characters or less).
- Use the imperative mood (e.g., "Add feature" not "Added feature").
- Leave a blank line after the summary, then add more details if needed.
- Describe why the change was made, not just what changed.
Other Useful Commit Options
- Create an empty commit:
git commit --allow-empty -m "Start project" - Quickly add staged changes to last commit, keep message:
git commit --amend --no-edit
- Forgot to stage a file?
If you rungit commit -m "message"but forgot togit adda file, just add it and commit again. Or usegit commit --amendto add it to your last commit. - Typo in your commit message?
Usegit commit --amend -m "Corrected message"to fix the last commit message. - Accidentally committed the wrong files?
You can usegit reset --soft HEAD~1to undo the last commit and keep your changes staged.
View Commit History (git log)
To view the history of commits for a repository, you can use the git log command:
Example
git log
commit dceae35c9d24836eb69ce58671132960f2b0576e (HEAD -> main)
Author: W3Schools <test@w3schools.com>
Date: Wed Jan 15 10:00:00 2025 +0000
Updated index.html with a new line
commit 712c39a18de4a88c3ea87acf90c6246a69009bf6
Author: W3Schools <test@w3schools.com>
Date: Wed Jan 15 10:00:00 2025 +0000
First release of Hello World!
Try it Yourself »
For a shorter view, use git log --oneline:
Example
git log --oneline
dceae35 (HEAD -> main) Updated index.html with a new line
712c39a First release of Hello World!
Try it Yourself »
To see which files changed in each commit, use git log --stat:
Example
git log --stat
commit dceae35c9d24836eb69ce58671132960f2b0576e (HEAD -> main)
Author: W3Schools <test@w3schools.com>
Date: Wed Jan 15 10:00:00 2025 +0000
Updated index.html with a new line
index.html | 1 +
1 file changed, 1 insertion(+)
commit 712c39a18de4a88c3ea87acf90c6246a69009bf6
Author: W3Schools <test@w3schools.com>
Date: Wed Jan 15 10:00:00 2025 +0000
First release of Hello World!
README.md | 2 ++
bluestyle.css | 3 +++
index.html | 12 ++++++++++++
3 files changed, 17 insertions(+)
Try it Yourself »