有没有办法在提交之前知道提交的哈希值?
有没有办法在提交之前知道提交的哈希值?
你需要这个信息的可能原因是什么?如果你想将提交的哈希放入其自己的提交消息中,很抱歉告诉你,这是不可能的(或者至少会破坏SHA1)。提交消息是生成哈希时使用的其中一个部分,因此任何修改消息的尝试都将更改哈希。
无论如何,在提交之前找出提交的哈希几乎和实际提交、写下哈希值,然后丢弃提交(如卡尔·诺鲁姆在他的评论中建议的那样)没有什么区别。原因是哈希是通过制作提交对象并将其通过 SHA1 传递来生成的。因此,为了在不提交的情况下找到哈希,你必须手动走过提交流程,并SHA1处理结果,而不实际将对象写入磁盘。而且,这不仅相当不切实际,而且完全没有意义。
提交哈希值取决于提交时间。
如果您在同一秒钟内进行了两次提交,更改相同、父级相同、作者和提交消息相同,则会获得相同的哈希值。否则,哈希值应该是不同的。
% git log --oneline --graph
* 0000003 (HEAD -> master) Third commit
* 0000002 Second commit
* 0000001 First commit
% git log --oneline --graph --reflog
* 4ef3899 Third commit
| * 0000003 (HEAD -> master) Third commit
|/
* 0000002 Second commit
| * d756f59 Second commit
|/
* 0000001 First commit
* a1e6be7 First commit