How do I list all of the files in a commit?
I am looking for a simple Git command that provides a nicely formatted list of all files that were part of the commit given by a hash (SHA-1), with no extraneous information.
I have tried:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Although it lists the files, it also includes unwanted diff information for each.
Is there another git
command that will provide just the list I want, so that I can avoid parsing it from the git show
output?
Solution 1:
Preferred Way (because it's a plumbing command; meant to be programmatic):
$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js
Another Way (less preferred for scripts, because it's a porcelain command; meant to be user-facing)
$ git show --pretty="" --name-only bd61ad98
index.html
javascript/application.js
javascript/ie6.js
- The
--no-commit-id
suppresses the commit ID output. - The
--pretty
argument specifies an empty format string to avoid the cruft at the beginning. - The
--name-only
argument shows only the file names that were affected (Thanks Hank). Use--name-status
instead, if you want to see what happened to each file (Deleted, Modified, Added) - The
-r
argument is to recurse into sub-trees
Solution 2:
If you want to get the list of changed files:
git diff-tree --no-commit-id --name-only -r <commit-ish>
If you want to get the list of all files in a commit, you can use
git ls-tree --name-only -r <commit-ish>
Solution 3:
I'll just assume that gitk
is not desired for this. In that case, try git show --name-only <sha>
.