chr*_*sta 2 git bash shell hash
我想将当前的 git hash 保存到我的回购文件中,如下所示:
echo `git rev-parse HEAD` > VERSION
git add VERSION
git commit -m 'updated version'
git push
Run Code Online (Sandbox Code Playgroud)
问题是,HEAD 不是要提交的修订版的哈希值,而是工作修订版(之前的一个修订版)的哈希值。所以如果我像上面那样,我总是有上一次提交的哈希,而不是最新的。
我可以在提交提交将具有的哈希数的修订之前获得吗?
提交哈希是提交对象的哈希,它包含各种字段,如提交作者、提交者、日期、父提交哈希和树哈希。树散列是该树中所有内容的散列,即所有文件的所有散列及其元数据(如模式和名称)。
修改文件(VERSION在给定的示例中),因此将修改树哈希,并且因为树哈希是提交对象的哈希内容的一部分,也是提交哈希。
预先计算散列以便在将散列记录到文件并更改树/提交散列之后将产生匹配的提交散列在理论上是可能的,但实际上不可行。这基本上意味着为每次提交产生哈希冲突。
话虽如此,如果只记录一个简短的散列就足够了,即一个合理唯一的前缀,如许多 git 命令和用户界面将显示的 7 个字符散列,这可以工作。有像git-vanity这样的项目,它会蛮力对提交对象进行小的修改,以产生特定长度的所需前缀。
简而言之,不可能获得“下一个”提交哈希,因为没有“下一个”提交哈希,它是根据该提交包含和引用的所有信息生成的。
| 归档时间: |
|
| 查看次数: |
1008 次 |
| 最近记录: |