使用gitpython比较两个分支的提交消息

Diff commit messages of two branches with gitpython

在工作中,我们有一个工作流,其中每个分支按日期 "named"。在一周内,至少有一次,最新的分支被推送到生产环境中。我们现在需要的是 summary/commit 生产中最新分支与通过 gitpython 的新分支之间变化的消息。

我尝试过的事情:

import git

g = git.Git("pathToRepo")
r = git.Repo("pathToRepo")
g.pull() # get latest

b1commits = r.git.log("branch1")
b2commits = r.git.log("branch2")

这给了我两个分支的所有提交历史记录,但我不知道如何比较它们以获得最新的提交消息。

这可以在 gitPython 中完成吗?或者有更好的解决方案吗?

我想通了:

import git

g = git.Git(repoPath+repoName)
g.pull()
commitMessages = g.log('%s..%s' % (oldBranch, newBranch), '--pretty=format:%ad %an - %s', '--abbrev-commit')

通读 Git 文档,我发现我可以用这种语法 B1..B2 比较两个分支。我用 gitpython 尝试了同样的方法并且它起作用了,其他参数用于自定义格式。

此解决方案使用 GitPython

import git

def get_commit_from_range(start_commit, end_commit):
    repo = git.Repo('path')
    commit_range = f"{start_commit}...{end_commit}"
    result = repo.iter_commits(commit_range)
    for commit in result:
       print(commit.message)