How to list all 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 (SHA1), 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?


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).
  • The -r argument is to recurse into sub-trees

  • If you want to get list of changed files:

    git diff-tree --no-commit-id --name-only -r <commit-ish>
    

    If you want to get list of all files in a commit, you can use

    git ls-tree --name-only -r <commit-ish>
    

    I'll just assume that gitk is not desired for this. In that case, try git show --name-only <sha> .

    链接地址: http://www.djcxy.com/p/692.html

    上一篇: 如何获得$(this)选择器的孩子?

    下一篇: 如何列出提交中的所有文件?