To list all files modified in a specific Git commit, use one of these methods:
1. Using git show (Simplest Method)
git show --name-only <commit-hash>
Example:
git show --name-only a1b2c3d
Output:
commit a1b2c3d... (commit message)
Author: John Doe <john@example.com>
Date: Mon Jan 1 12:00:00 2023 +0000
Your commit message
file1.txt
dir/file2.py
2. Using git diff-tree (Compact Output)
git diff-tree --no-commit-id --name-only -r <commit-hash>
Example:
git diff-tree --no-commit-id --name-only -r a1b2c3d
Output (only filenames):
file1.txt
dir/file2.py
3. Using git log with File List
git log -1 --name-only <commit-hash>
Example:
git log -1 --name-only a1b2c3d
Output:
commit a1b2c3d... (commit message)
Author: John Doe <john@example.com>
Date: Mon Jan 1 12:00:00 2023 +0000
Your commit message
file1.txt
dir/file2.py
4. For the Most Recent Commit
Replace <commit-hash> with HEAD:
git show --name-only HEAD
Key Notes
- Use
--name-statusinstead of--name-onlyto see action types (e.g.,Afor added,Mfor modified):
git show --name-status a1b2c3d
Output:
A file1.txt
M dir/file2.py
- For all files in the repository at that commit (not just changed files), use:
git ls-tree -r --name-only <commit-hash>
Summary
| Command | Use Case |
|---|---|
git show --name-only <commit> | See commit details + changed files |
git diff-tree --name-only -r <commit> | Get only filenames (no commit info) |
git log -1 --name-only <commit> | Commit metadata + files changed |