我正在寻找一个简单的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
显示受影响的文件名(Thanks 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>
。