如何在gitpython中使用git log --oneline

时间:2019-03-05 14:10:58

标签: gitpython

我正在尝试通过提供起始sha和结束sha来提取提交消息列表。使用git log在git中很容易。 但是我正在尝试通过gitpython库做到这一点。 有人可以帮助我实现这一目标吗?

在Git中,命令是这样的:

git log --oneline d3513dbb9f5..598d268f

我如何用gitpython做到这一点?

3 个答案:

答案 0 :(得分:1)

GitPython const arr = ["foo", "baz", "bar"]; delete arr[1]; console.log(arr); // undefined is null in the JSON string console.log(JSON.stringify(arr));函数(docs)支持ref-parse-style commit ranges。因此,您可以这样做:

Repo.iter_commits()

此后的一切取决于您要获取的确切格式。如果您想要类似于import git repo = git.Repo("/path/to/your/repo") commits = repo.iter_commits("d3513dbb9f5..598d268f") 的东西,那么就可以解决问题(它是简化形式,没有显示标签/分支名称):

git log --oneline

答案 1 :(得分:0)

您可能想尝试PyDriller(GitPython的包装器),它更容易:

for commit in RepositoryMining("path_to_repo", from_commit="STARTING COMMIT", to_commit="ENDING_COMMIT").traverse_commits():
    print(commit.msg)

如果要提交特定分支,请添加参数only_in_branch="BRANCH_NAME"。文件:http://pydriller.readthedocs.io/en/latest/

答案 2 :(得分:0)

您可以使用纯gitpython:

System.Linq.Async

会给您:

import git
repo = git.Repo("/home/user/.emacs.d") # my .emacs repo just for example
logs = repo.git.log("--oneline", "f5035ce..f63d26b")

如果您想要漂亮的输出,请使用漂亮的打印:

>>> logs
'f63d26b Fix urxvt name to match debian repo\n571f449 Add more key for helm-org-rifle\nbea2697 Drop bm package'
from pprint import pprint as pp

请注意,如果您想将>>> pp(logs) ('f63d26b Fix urxvt name to match debian repo\n' '571f449 Add more key for helm-org-rifle\n' 'bea2697 Drop bm package') 设为logs,只需将其设为列表即可 使用str

Gitpython与git具有几乎所有相似的API。例如,{{1}的logs.splitlines()repo.git.log的{​​{1}}。在Gitpython API Reference

中了解更多信息