长SHA可按如下方式获得:
repo = git.Repo(search_parent_directories=True) sha = repo.head.object.hexsha
或者,在git 3.1.7中:
sha = repo.head.commit.hexsha
做空一个怎么样?(做空SHA是由回购规模决定的,所以不应该像sha[:7]那样)
SHA
sha[:7]
cngwdvgl1#
据我所知,gitpython Commit对象并不直接支持sha,但是你仍然可以使用gitpython对直接调用git的支持来获取sha(从git 3.1.7开始):
Commit
repo = git.Repo(search_parent_directories=True) sha = repo.head.commit.hexsha short_sha = repo.git.rev_parse(sha, short=4)
这相当于运行
git rev-parse --short=4 ...
这将返回长度〉= 4的最短哈希值(你可以传入一个更小的数字,但由于git的内部min值是4,所以效果是一样的)。
xmd2e60i2#
这里你需要使用rev-parse的short参数来生成唯一标识提交的最小SHA。基本上,short会调用内部的git API,并返回唯一标识提交的SHA的最短可能长度字符串,即使你传递了一个非常小的值。因此,你可以有效地做如下操作:这将始终为您提供最短的SHA(我使用short=1来强调这一点):
rev-parse
short
short=1
In [1]: import git In [2]: repo = git.Repo(search_parent_directories=True) In [3]: sha = repo.head.object.hexsha In [4]: short_sha = repo.git.rev_parse(sha, short=1) In [5]: short_sha Out[5]: u'd5afd'
您可以读取more about this from the git side here。此外,正如man-page for git-rev-parse中提到的,--short默认将7作为其值,并且最小值为4。--short=number不要输出对象名称的完整SHA-1值,而是尝试将其缩写为较短的唯一名称。如果未指定长度,则使用7。最小长度为4。
--short=number
9rnv2umw3#
实际上你需要使用
short_sha = repo.git.rev_parse(sha, short=True)
short=4总是显示4个字母的哈希值,即使在我的git库中也是如此
dhxwm5r44#
对于gitpython3.1.15,似乎有一种更短的方法来比较哈希值to the other answers。你可以简单地
hash = repo.git.rev_parse(repo.head, short=True)
您不需要显式获取
第一。
vsmadaxz5#
已经给出的答案假设你是通过shell调用rev-parse的,这是很慢的。如果你已经有了一个repo的引用,你可以通过访问Commit对象的name_rev属性来实现,并使用如下的字符串截断。引用的长度是固定的(这里是8),但它是有效的:
repo.remotes.origin.refs['my/branch/name'].object.name_rev[:8]
此命令的实际输出是完整的sha,后跟一个空格,再后跟分支名称。
kb5ga3dv6#
当前答案已过时,重试提交的sha的方式是commit.hexsha。
commit.hexsha
6条答案
按热度按时间cngwdvgl1#
据我所知,gitpython
Commit
对象并不直接支持sha,但是你仍然可以使用gitpython对直接调用git的支持来获取sha(从git 3.1.7开始):这相当于运行
这将返回长度〉= 4的最短哈希值(你可以传入一个更小的数字,但由于git的内部min值是4,所以效果是一样的)。
xmd2e60i2#
这里你需要使用
rev-parse
的short
参数来生成唯一标识提交的最小SHA。基本上,short
会调用内部的git API,并返回唯一标识提交的SHA的最短可能长度字符串,即使你传递了一个非常小的值。因此,你可以有效地做如下操作:这将始终为您提供最短的SHA(我使用short=1
来强调这一点):您可以读取more about this from the git side here。此外,正如man-page for git-rev-parse中提到的,--short默认将7作为其值,并且最小值为4。
--short=number
不要输出对象名称的完整SHA-1值,而是尝试将其缩写为较短的唯一名称。如果未指定长度,则使用7。最小长度为4。
9rnv2umw3#
实际上你需要使用
short=4总是显示4个字母的哈希值,即使在我的git库中也是如此
dhxwm5r44#
对于gitpython3.1.15,似乎有一种更短的方法来比较哈希值to the other answers。
你可以简单地
您不需要显式获取
第一。
vsmadaxz5#
已经给出的答案假设你是通过shell调用rev-parse的,这是很慢的。如果你已经有了一个repo的引用,你可以通过访问Commit对象的name_rev属性来实现,并使用如下的字符串截断。引用的长度是固定的(这里是8),但它是有效的:
此命令的实际输出是完整的sha,后跟一个空格,再后跟分支名称。
kb5ga3dv6#
当前答案已过时,重试提交的sha的方式是
commit.hexsha
。