有没有更简洁的方法来获取HEADGit 的短版本哈希?
我希望看到与我相同的输出:
git log -n 1 | head -n 1 | sed -e 's/^commit //' | head -c 8
Run Code Online (Sandbox Code Playgroud)
我最初使用它来生成版本字符串,但这更好:
git describe --tags
Run Code Online (Sandbox Code Playgroud)
它将输出字符串,如0.1.12(标记提交)或0.1.11-5-g0c85fbc(标记后的五次提交).
如果您要构建一个目录结构,其中一个目录以Git存储库中的提交命名,并且您希望它足够短以使您的眼睛不流血,但足够长以使其碰撞的可能性可以忽略不计,通常需要多少SHA子串?
假设我想要唯一地识别这种变化:https://github.com/wycats/handlebars.js/commit/e62999f9ece7d9218b9768a908f8df9c11d7e920
我可以使用前四个字符:https: //github.com/wycats/handlebars.js/commit/e629
但我觉得这样会有风险.但是,假设一个代码库,在几年内,可能会有30k的变化,如果我使用8个字符,碰撞的几率是多少?12?是否有一些通常被认为可接受的数字?
长SHA可以得到如下:
repo = git.Repo(search_parent_directories=True)
sha = repo.head.object.hexsha
Run Code Online (Sandbox Code Playgroud)
短的怎么样?(简称SHA由回购的规模决定,所以它不应该像sha[:7])