如何列出提交中的所有文件?

我正在寻找一个简单的git命令,它提供了一个格式良好的所有文件列表,这些文件是由散列(SHA1)提供的提交的一部分,并且没有无关的信息。

我努力了:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

尽管它列出了这些文件,但它也包含了各种不需要的差异信息。

是否有另一个git命令会提供我想要的列表,以便我可以避免从git show输出中解析它?


首选方式 (因为它是一个管道命令;本意是编程式的):

$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js

另一种方式 (对于脚本来说不太优选,因为它是一个瓷器命令;意味着面向用户)

$ git show --pretty="" --name-only bd61ad98    
index.html
javascript/application.js
javascript/ie6.js

  • --no-commit-id禁止提交ID输出。
  • --pretty参数指定一个空的格式字符串以避免在开始时出现错误。
  • --name-only参数--name-only显示受影响的文件名(谢谢Hank)。
  • -r参数是递归到子树中

  • 如果你想获得更改文件的列表:

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

    如果你想获得提交中所有文件的列表,你可以使用

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

    我只是假设gitk不适合这个。 在这种情况下,请尝试使用git show --name-only <sha>

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

    上一篇: How to list all the files in a commit?

    下一篇: Checking if a key exists in a JavaScript object?