Git:如何在commit --amend中重用commit rev?

时间:2016-04-01 03:53:05

标签: git

我的发布文件的名称取决于commit=$(git rev-parse --short HEAD),我想将发布文件放到我的git repo中。什么时候修改提交,$commit发生了变化,是否可以在$commit之后重用git commit --amend

3 个答案:

答案 0 :(得分:1)

不,这是不可能的。

以下是sha-1中的一些内容,ylabel(['\fontsize{16}{0}\selectfont $\dot{x}$'], 'interpreter','latex'); 返回的值会导致sha-1发生变化:

  • 作者姓名
  • 提交日期
  • 提交消息
  • 父母名单

,最重要的是

  • 存储库中所有文件和目录的sha-1 。在其中一个文件中添加空格字符将使得再次获得相同的sha-1成为不可能。

答案 1 :(得分:0)

git commit --amend --no-edit

这会保留提交消息(如果这是你想要的)

答案 2 :(得分:0)

不,这是不可能的。

这是因为Git在基础层面的工作方式。 Git中的每个提交,以及Git中的所有 else ,都是一个名为 blob 的二进制对象。

某些blob是您正在存储的文件的特定修订版;这些斑点独立于所有其他斑点。但是,有些斑点指的是其他斑点。用于引用另一个blob的键是blob本身的sha-1哈希。提交对象递归地引用其父提交(通过它们的哈希)以及包含 提交的存储库状态的所有对象。 commit blob还包含元数据,包括时间戳和提交消息

因此,当您更改提交的提交消息时,您正在更改blob的内容,因此sha-1是不同的。与任何散列算法一样,即使对于小的更改,sha-1输出非常也不同(这是散列算法的一个重要部分)。

没有办法避免这种情况。 blob由其内容的sha-1引用;提交消息是一个blob; commit-blob必须以某种方式包含提交信息,包括提交消息。

相关问题