使用gitpython在文件中添加和删除的行数

Number of lines added and deleted in files using gitpython

如何get/extract添加和删除行数? (就像我们使用 git diff --numstat 一样)。

repo_ = Repo('git-repo-path')
git_ = repo_.git
log_ = g.diff('--numstat','HEAD~1') 
print(log_)

将整个输出(行 added/deleted 和文件名)打印为单个字符串。是否可以修改或更改此输出格式以提取有用信息?

Output format: num(added) num(deleted) file-name 

对于所有修改过的文件。

如果我没理解错的话,您想从 log_ 变量中提取数据然后重新格式化并打印吗?如果是这种情况,那么我认为最简单的修复方法是使用正则表达式:

import re

for line in log_.split('\n'):
    m = re.match(r"(\d+)\s+(\d+)\s+(.+)", line)
    if m:
        print("{}: rows added {}, rows deleted {}".format(m[3], m[1], m[2]))

确切的输出,当然你可以修改任何你想要的方式,一旦你有匹配的数据m。掌握正则表达式可能需要一段时间,但它对小型脚本非常有帮助。

但是,请注意,reg exps 往往是只写代码,很难调试。但是,对于像这样提取小零件,还是很有帮助的。