首页 > 解决方案 > 如何使用 git python 获取第一个父提交的列表?

问题描述

我想从 git python 运行这个命令的等价物,但还没有找到一种方法来完成这个。

git rev-list --first-parent commit1..HEAD

我希望将该命令的结果放入 git python 的 Commit 对象的可迭代中。我试过 repo.iter_commits 但它似乎无法接受不接受参数的 rev-list 参数。

我的用例是“commit1”将是分支所基于的提交,我将在分支签出时运行此代码。因此,这个命令会给我提交到分支的提交列表,即使存在来自分支“commit1”的合并提交。

我也试过

repo.iter_commits('HEAD ^commit1')

但这会导致以下错误: git.exc.GitCommandError: Cmd('git') failed due to: exit code(128) cmdline: git rev-list HEAD ^commit1 -- stderr: 'fatal: bad revision 'HEAD ^提交1'

但是,我可以运行

git rev-list HEAD ^commit1 --

在 bash 中运行良好。此外,该命令并没有真正给我我需要的东西。

标签: gitpython

解决方案


通过在 git python 中直接使用提交的父列表,我能够得到我需要的东西。这是对我有用的片段:

       commits = list() 
       c = repo.head.commit
       while (True):         
            firstparent = c.parents[0]
            if (firstparent != commit1):
                c = firstparent
                commits.append(c)
            else:
                break

上面的代码不处理第一次提交(没有父母。)


推荐阅读