如何在Python中获取git repo的最后一次提交ID

Vir*_*Sow 0 python git

我想知道存储库中确切的 git 提交 ID。可能就像最新的提交(最近的)和第二个最近的提交。

我已经尝试过如下所示的 git 命令,但我需要在 python 脚本中使用相同的命令。

$ git rev-parse @最近的输出:669ec6662bedc7a9962bef83612a33522a8e4fb8

$ git rev-parse @~第二个最新输出:97a90650792efdbef3f6abb92bd6108c11889cc6

Che*_* A. 6

您可以使用subprocess模块来做到这一点。此代码将返回一个包含最后两次提交的列表,其中列表中的第一项是最新的。

import subprocess

def get_git_revisions_hash():
    hashes = []
    hashes.append(subprocess.check_output(['git', 'rev-parse', 'HEAD']))
    hashes.append(subprocess.check_output(['git', 'rev-parse', 'HEAD^']))
    return hashes
Run Code Online (Sandbox Code Playgroud)

通过列表理解也可以实现同样的效果。该解决方案更具可扩展性,因为您不需要添加额外的子流程调用:

commits = ['HEAD', 'HEAD^']
def get_git_revisions_hash2():
    return [subprocess.check_output(['git', 'rev-parse', '{}'.format(x)])
            for x in commits]
Run Code Online (Sandbox Code Playgroud)

还有GitPython模块,它为您提供了 git 接口。你可以阅读文档,它为 git 提供了更多内置工具。