gitpython - 检查分支是否未与存储库对象合并?

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

我需要检查我感兴趣的分支是否合并到另一个分支。

有了

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
对象做同样的事情(如果可能的话?)。

git git-branch git-merge gitpython
2个回答
0
投票

我猜合并分支在另一个 (

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)

很想知道更好的版本,您可以轻松找到所有“已合并”分支。


0
投票

我最近的任务是识别具有 300 多个分支的存储库中的陈旧分支。

这对我有用(例如,用于查找合并到名为 feature/F12345-example-feature 的分支中的所有分支):

repo.git.branch('-r', '--merged', 'origin/feature/F12345-example-feature')

请注意,为了解析远程分支,需要“-r”和远程前缀(在本例中为“origin”)。

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