我正在编写一个脚本来分析对 git repo 所做的更改。
在某些时候,我需要遍历所有提交并获取有关每个提交的这些信息:
我通过
git log
获得提交消息和日期.我遇到的问题是文件。如果我不想收集添加/删除的行数,我只需使用
git diff-tree --no-commit-id --name-status -M -r abcd12345
输出将类似于
A Readme.md
M src/something.js
D src/somethingelse.js
R100 tests/a/file.js tests/b/file.js
我可以以编程方式解析和阅读。
要获取有关添加/删除的行的信息,我可以使用:
git diff-tree -M -r --numstat abcd12345
输出将是这样的:
abcd12345
82 0 Readme.md
41 98 src/something.js
0 64 src/somethingelse.js
0 0 tests/{a => b}/file.js
对于重命名的文件,这不是机器可读的。
我的问题是:有没有办法将这两个命令结合起来?好像不能用
--numstat
与 --name-status
. 我可以运行两个单独的命令并将结果 merge 到我的脚本中。在这种情况下,是否还有其他开关可以用来使第二个命令的结果更具机器可读性?
谢谢。
最佳答案
我认为您的分析(您需要两个单独的命令)是正确的。使用 -z
使用 --numstat
获得机器可读的输出(这会禁用花哨的重命名编码和所有特殊字符引用),但请注意,您将不得不在 ASCII NUL 处将行分开,而不是换行符。
关于git-diff - 使用 --numstat 和 --name-status 运行 git diff-tree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39171874/