git - 即使我不修改任何内容,提交 sha1sum 也会发生变化

标签 git

提交后,我的 git 日志中有以下内容:

    commit 86270b43fe954e78733f1a8f0c4378b954ad9de4
    Author: abc <<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="62030001220300014c010d0f" rel="noreferrer noopener nofollow">[email protected]</a>>
    Date:   Sat Aug 31 12:04:32 2013 -0700

        Adding file1 and file2

那我就做

    abc@abc-ubuntu:~/gittest$ git commit --amend

但是我保存了编辑器缓冲区而不修改任何内容

现在再次执行git log,我明白了

    commit 632c8ddff3fd023e947e76350e0678ba2f04706d
    Author: abc <<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="10717273507172733e737f7d" rel="noreferrer noopener nofollow">[email protected]</a>>
    Date:   Sat Aug 31 12:04:32 2013 -0700

        Adding file1 and file2

请注意,尽管我在 git commit --amend 期间没有更改任何内容,但两次提交的 sha1sum 是不同的

最佳答案

你确实改变了一些东西:你改变了提交时间。您可以通过

看到这一点
git show --format=fuller 86270b43fe954e78733f1a8f0c4378b954ad9de4
git show --format=fuller 632c8ddff3fd023e947e76350e0678ba2f04706d

看看两个CommitDate,它们不匹配。

正如 mvp 的答案所暗示的,如果您确实设法复制提交日期/时间,您将获得相同的 sha1。您可以通过设置GIT_COMMITTER_DATE环境变量将提交时间覆盖为您想要的任何值,包括原始提交中记录的确切提交时间:

GIT_COMMITTER_DATE=$(git log -1 --format=%cd) git commit --amend

现在,如果您不更改提交消息,您应该得到完全相同的提交。但除非您有理由记录您重新提交的事实,否则您应该坚持使用默认值。

关于git - 即使我不修改任何内容,提交 sha1sum 也会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18551857/

相关文章:

git - 跨不同的 GitHub 存储库 pull 请求,这些存储库不是彼此 fork 的吗?

ruby - 什么是处理测试、临时文件和版本控制的正确方法

git - 为什么 git rm --cached 不删除本地曾经跟踪的文件而是其他文件

git - 使用 GitHub Pages 时了解 Jekyll 和 gh-pages 分支

python - Openshift:如何从私有(private)存储库安装 python 模块?

git - Git Stash 存储在哪里?

git - 有没有办法从本地 git 工作树中删除所有被忽略的文件?

git - 分支 checkout 期间随机文件的权限被拒绝错误

git 将没有共同祖先的多个存储库中的工作 merge 到新存储库中

git - 致命 : Not a gitflow-enabled repo yet. 请先运行 'git flow init'