2013-01-08 170 views
15

有什么办法在提交之前知道提交的哈希值?提交之前知道GIT哈希?

+0

是否有一个原因,你不能只是提交,获得散列,然后重置 - 软件? –

+1

我认为这样做,但是没有办法做到这一点,而不是这个过程? –

+0

总有一种方法,但它有点体操。你为什么需要哈希? –

回答

12

你有什么可能的原因需要吗?如果您正在考虑将提交的哈希放入自己的提交消息中,我很遗憾地告诉您,但这是不可能的(或者至少在不破坏SHA1的情况下是不可能的)。提交消息是生成哈希时使用的片段之一,因此任何修改该消息的尝试都会改变哈希。

在任何情况下,找出在提交之前的提交的哈希值是从实际上犯,写下哈希,然后扔掉的承诺(如卡尔Norum时他的评论中所建议的)几乎没有区别。原因是哈希是通过使提交对象并通过SHA1传递来生成的。因此,为了在没有提交的情况下查找散列,您必须基本上手动完成提交过程并SHA1结果,而不必将对象写入磁盘。这不仅是不切实际的,而且也是毫无意义的。

+0

我认为GIT有办法做到这一点,就像Subversion一样(例如$ Revision $)。 –

+2

@MarceloLiberato:在Subversion中,预测你正在创建的提交版本号将会变得微不足道。在git中,这是完全不可能的(再次,除非你建议以某种方式破坏SHA1)。 –

+0

“不可能”我不是指“因为git没有提供方式”,我的意思是“因为你不可能实现这个功能,期间”。 –

9

提交哈希取决于提交时间。

如果您在同一秒内做了2次提交相同的更改,相同的父代,同一作者和提交消息,您将获得相同的散列。否则,哈希应该是不同的。