给定长 git 提交如何安全地获得短提交

Given long git commit how to safely get short commit

如果我查询 bitbucket api 的提交,我得到长版本:

bitbucket_curl(){
    curl -H 'Authorization:Basic YW1JyKg==' "https://api.bitbucket.org$@"
}

commits="$(bitbucket_curl '/2.0/repositories/interos/datavana/commits/alex/dockerize?pagelen=3')"

latest_commit="$(echo "$commits" | jq -r '.values[0].hash')"

给出一个长提交:c56cefbd0c81142558cf814cba7d7cd75d7cb6a7

有没有办法可靠地获取短提交哈希?是不是像最后 10 个字符之类的?或者也许有一种方法可以从 Bitbucket API 请求短散列?关于那个主题,我正在寻找一种可靠的方法来获取分支的最新提交。

我不太了解 Bitbucket API,也不太了解它的端点是否需要完整的 SHA-1 哈希,但据我所知,没有正式的短版提交哈希。唯一的一般要求是使用的哈希片段可以正确解析为单个提交。

Bitbucket 网站似乎只显示 SHA-1 散列的前 7 个字符。大约有 780 亿个长度为 7 的不同哈希值,因此不太可能在单个页面上发生冲突。

git 有一个命令来获取提交哈希的短版本,将完整的提交哈希作为输入。

git rev-parse --short $commit

如果 $commit 是 c56cefbd0c81142558cf814cba7d7cd75d7cb6a7,这将输出 c56cefb

this SO answer by mark-longair

中找到了解决方案