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

问题描述 投票:0回答:2

我试图通过给出一个开始sha和end sha来提取提交消息列表。使用git log在git中很容易。但我试图通过gitpython库来做到这一点。有人可以帮助我实现这个目标吗?

在Git中,命令是这样的:

git log --oneline d3513dbb9f5..598d268f

我怎么用gitpython做到这一点?

gitpython
2个回答
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/


0
投票

你可以使用纯gitpython:

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')

请注意logsstr如果你想把它列为一个列表,只需使用logs.splitlines()

Gitpython与git几乎都有类似的API。例如repo.git.loggit logrepo.git.showgit show。在Gitpython API Reference了解更多信息

© www.soinside.com 2019 - 2024. All rights reserved.