【问题标题】:git commit --amend - commit hash is changed when no changes are madegit commit --amend - 提交哈希在没有更改时更改
【发布时间】:2015-12-04 18:15:06
【问题描述】:

我希望更正我对此的理解,但我不确定为什么会发生这种情况。

使用 git 时,我知道如果我对文件进行更改然后提交它,我会得到一个新的哈希,因为文件已更改。

我对@9​​87654321@ 的理解是我可以对最后一次提交进行更改。

现在我可以理解了,如果我更改提交消息,哈希就会改变。

但是当我没有进行任何更改而只是保存并退出编辑器时(我可能已经改变了需要更改的想法)为什么哈希会更改? 我所有的文件和一切都是一样的,但我已经保存了它。当我的git log 的提交时间没有改变时,它只是在日志中出现了两次相同的时间,相同的消息,相同的文件,除了不同的提交哈希。

如果没有做任何改动,为什么它会改变??

【问题讨论】:

    标签: git hash commit git-amend


    【解决方案1】:

    Git 哈希是使用许多项目计算的,包括作者姓名/日期、提交名称/日期提交消息、树和父 SHA 等。当您修改提交时,commit 名称和日期会更新。 (除非您将其他格式选项传递给 git log,否则您通常看不到提交名称和日期。)因为已更新,提交哈希将在修改提交时更改。

    【讨论】:

    • mipadi 完全正确。您刚刚自己创建了一个新的提交,并添加了之前提交的更改,取代了之前的提交。
    • 嗯,有道理,谢谢你的更新。所以只是澄清一下是否没有进行任何更改并且哈希没有更改??
    • @JeffKranenburg:事实上有。如果您在修改提交时保持提交者作者和日期相同,并且不进行其他相关更改,则哈希将保持不变。您可以使用 GIT_COMMITTER_NAMEGIT_COMMITTER_DATE 环境变量覆盖提交者作者和日期。
    • @JeffKranenburg:但是,如果您只是想中止 git commit --amend,那么当 Git 提示您编辑它时删除整个提交消息可能更容易。 Git 不会接受空消息,而是会中止提交。
    • 太棒了,我会玩弄它的。
    猜你喜欢
    • 2017-09-23
    • 2014-07-10
    • 2011-07-09
    • 2018-11-27
    • 1970-01-01
    • 2011-06-29
    • 2017-09-09
    • 2015-03-26
    • 2016-10-09
    相关资源
    最近更新 更多