我正在编写一个脚本来分析更改已经变成了一个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
一起使用。
我可以运行两个单独的命令并将结果合并到我的脚本中。在这种情况下,是否有任何其他开关可用于使第二个命令的结果更具机器可读性?
感谢。
答案 0 :(得分:2)
我认为您的分析(需要两个单独的命令)是正确的。使用-z
获取--numstat
的机器可读输出(这会禁用花哨的重命名编码和所有特殊字符引用),但请注意,您必须打破以ASCII NUL而不是换行符分开。