我需要检查我感兴趣的分支是否合并到另一个分支。
有了
gitpython
,我可以使用它的 git 命令对象,例如:
import git
g = git.Git('/path/to/git/repo')
g.branch("--no-merged", "master")
Out[273]: u'* new\n test'
所以它输出正确的分支,但它返回的格式有点不太好。现在我需要解析字符串并找到我感兴趣的分支。
我在想是否可以使用以下方法来完成同样的事情:
repo = git.Repo('/path/to/git/repo')
# Check branches using `repo` object as starting point?
使用
repo
对象,有许多有用的方法可以检索已解析为对象的有用信息,但我没有找到如何使用 repo
对象做同样的事情(如果可能的话?)。
我猜合并分支在另一个 (
master
) 分支上提前了 0 次提交。
from git import Repo
branch_name = 'is-this-branch-merged'
repo = Repo('.')
commits_ahead = repo.iter_commits('origin/master..%s' % branch_name)
commits_ahead_count = sum(1 for c in commits_ahead)
is_merged = (commits_ahead_count == 0)
很想知道更好的版本,您可以轻松找到所有“已合并”分支。
我最近的任务是识别具有 300 多个分支的存储库中的陈旧分支。
这对我有用(例如,用于查找合并到名为 feature/F12345-example-feature 的分支中的所有分支):
repo.git.branch('-r', '--merged', 'origin/feature/F12345-example-feature')
请注意,为了解析远程分支,需要“-r”和远程前缀(在本例中为“origin”)。