GitPython相当于"git remote show origin"?

wes*_*wes 7 python git gitpython

我正在尝试更新一个Python脚本,该脚本检查一些本地存储库的状态,以防止从使用进程到使用GitPython的远程控制器.什么是等效的命令GitPythongit remote show origin,或者有什么更好的方法来检查本地回购是快速转发外的日期(等)?

$ git remote show origin
* remote origin
  Fetch URL: <url>
  Push  URL: <url>
  HEAD branch: master
  Remote branches:
    XYZ    tracked
    master tracked
  Local branches configured for 'git pull':
    XYZ    merges with remote XYZ
    master merges with remote master
  Local refs configured for 'git push':
    XYZ    pushes to XYZ    (up to date)
    master pushes to master (up to date)
Run Code Online (Sandbox Code Playgroud)

最后两行是我主要关注的问题.它看起来像这可能是可能的GitPython通过迭代git.Repo.headsgit.Repo.remotes.origin.refs和比较.master.commit(等)的哈希值.这似乎比上面的单个本机git命令要多得多,并且需要更多的工作来判断哪一方已经过时.我期待着类似的东西git.Repo.remotes.origin.status().在GitPython中确定这个的正确方法是什么?

Mar*_*ins 0

git remote show origin如果您需要每个分支的简洁报告,我不知道有什么比作为子进程运行更好的了。如果您对单个分支感兴趣,假设您已经完成了提取,则可以检查落后或领先的提交数量,如下所示:

commits_behind = list(repo.iter_commits(
            '{branch}..{tracking_branch}'.format(
                branch=branch,
                tracking_branch=repo.heads[branch].tracking_branch())))

commits_ahead = list(repo.iter_commits(
            '{tracking_branch}..{branch}'.format(
                branch=branch,
                tracking_branch=repo.heads[branch].tracking_branch())))
Run Code Online (Sandbox Code Playgroud)