如何使用GitPython获取ref ID的唯一部分?

时间:2015-07-20 21:55:25

标签: git python-2.7 gitpython

GitPython允许我处理Git工作副本。我想用它。但是,如何使用GitPython获取唯一部分,即"缩写的参考ID"?

所以我对--abbrev-commitgit log的{​​{1}}选项感兴趣(例如在git log --abbrev-commit --pretty=oneline -n 1中)。

我如何在GitPython中获得 - 或者我是否必须通过枚举参考ID并自行计算所需的长度来实现这一点?

1 个答案:

答案 0 :(得分:3)

以下代码是关于如何使用GitPython中的git rev-parse --short功能的示例:

import git
r = git.Repo()
short = r.git.rev_parse(r.head, short=True)
print(short)
# u'f360ecd'

似乎使用git-command比以安全方式自己实现它更好。

一个天真的纯python实现可能看起来像这样:

r.head.commit.hexsha[:7]

但是,它不会检查所获得的前缀在创建时是否真正唯一,这就是为什么应首选基于git命令的方法。