如何在 gitpython 中使用 git log --oneline
How to use git log --oneline in gitpython
我正在尝试通过提供开始 sha 和结束 sha 来提取提交消息列表。 git 使用 git 日志很容易。
但我正在尝试通过 gitpython 库来完成。
有人可以帮我实现这个目标吗?
在Git中的命令是这样的:
git log --oneline d3513dbb9f5..598d268f
我如何使用 gitpython 来实现?
您可能想尝试 PyDriller(GitPython 的包装器),它更容易:
for commit in Repository("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/
你可以使用纯 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')
注意 logs
是 str
如果你想把它变成一个列表,就
使用 logs.splitlines()
Gitpython 几乎所有类似 API 和 git。例如 repo.git.log
对应 git log
,repo.git.show
对应 git show
。在 Gitpython API Reference
中了解更多信息
GitPython Repo.iter_commits()
function (docs) has support for ref-parse-style commit ranges。所以你可以这样做:
import git
repo = git.Repo("/path/to/your/repo")
commits = repo.iter_commits("d3513dbb9f5..598d268f")
之后的一切都取决于您想要获得的确切格式。如果你想要类似于 git log --oneline
的东西,那就可以了(这是一种简化形式,tag/branch 名称未显示):
for commit in commits:
print("%s %s" % (commit.hexsha, commit.message.splitlines()[0]))
我正在尝试通过提供开始 sha 和结束 sha 来提取提交消息列表。 git 使用 git 日志很容易。 但我正在尝试通过 gitpython 库来完成。 有人可以帮我实现这个目标吗?
在Git中的命令是这样的:
git log --oneline d3513dbb9f5..598d268f
我如何使用 gitpython 来实现?
您可能想尝试 PyDriller(GitPython 的包装器),它更容易:
for commit in Repository("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/
你可以使用纯 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')
注意 logs
是 str
如果你想把它变成一个列表,就
使用 logs.splitlines()
Gitpython 几乎所有类似 API 和 git。例如 repo.git.log
对应 git log
,repo.git.show
对应 git show
。在 Gitpython API Reference
GitPython Repo.iter_commits()
function (docs) has support for ref-parse-style commit ranges。所以你可以这样做:
import git
repo = git.Repo("/path/to/your/repo")
commits = repo.iter_commits("d3513dbb9f5..598d268f")
之后的一切都取决于您想要获得的确切格式。如果你想要类似于 git log --oneline
的东西,那就可以了(这是一种简化形式,tag/branch 名称未显示):
for commit in commits:
print("%s %s" % (commit.hexsha, commit.message.splitlines()[0]))