我的发布文件的名称取决于commit=$(git rev-parse --short HEAD),我想把发布文件放到我的git。当某些修改提交时,$commit更改,是否可以在git commit --amend之后重用$commit?
发布于 2016-04-01 04:28:31
不,这不可能。
下面是沙-1中的一些内容,这是git rev-parse --short返回的值,它将导致sha-1发生变化:
最重要的是
发布于 2016-04-01 04:13:11
git commit --amend --no-edit
这将保留提交消息(如果这是您想要的话)
发布于 2016-04-01 04:24:36
不这是不可能的。
这是因为Git在基本水平上是如何工作的。Git中的每个提交,以及Git中的其他所有东西,都是一个名为blob的二进制对象。
有些blobs是您正在存储的文件的特定修订;这些blobs独立于所有其他blobs。不过,有些斑点指的是其他的斑点。用于引用另一个blob的键是blob本身的sha-1散列。提交对象递归地引用其父提交(通过其散列)和构成该提交的存储库状态的所有对象。commit blob还包含元数据,包括时间戳和提交消息。
因此,当您为commit更改提交消息时,您正在更改blob的内容,因此沙-1是不同的。与任何散列算法一样,沙-1的输出是非常不同的,即使是小的变化(这是哈希算法的很大一部分)。
没有办法避免这种情况。blob由其内容的sha-1引用;提交消息是blob;commit blob必须以某种方式包含提交信息,包括提交消息。
https://stackoverflow.com/questions/36347738
复制相似问题