gpt4 book ai didi

git - 提交的 SHA-1 是否仅根据树的内容计算?

转载 作者:IT王子 更新时间:2023-10-29 00:58:33 25 4
gpt4 key购买 nike

为了进行实验,假设您的 git log 标识了以下提交

commit 16bc8486fb34cf9a6faf0f7df606ae72ad9ea438  // added 2nd file
commit 9188f9a25b045f130b08888bc3f638099fa7f212 // initial commit

提交后,.git/refs/heads/master 指向 16bc8486fb34cf9a6faf0f7df606ae72ad9ea438。

比方说,在此之后,我手动编辑 .git/refs/heads/master 文件以指向 9188f9a25b045f130b08888bc3f638099fa7f212

此时,git status 识别出需要注意一个新的未提交文件。这是我第二次提交之前处理的同一个文件。

如果我提交了.. git log 现在显示

commit b317f67686f9e6ab1eaabf47073b401d677205d5  // 2nd file committed for the 2nd time
commit 9188f9a25b045f130b08888bc3f638099fa7f212 // initial commit

问题 1:

您会注意到 SHA 哈希在我第一次提交第二个文件时和现在是不同的。这是为什么?文件内容没有改变,仍然是同一个文件。

问题二

此时,原来的第二次提交发生了什么?当我执行 git show 16bc8486 时,它会显示此提交。但是,它不会出现在 git log 历史记录中。

最佳答案

问题 1:因为生成哈希时考虑了所有内容,包括提交元数据(它本身包含日期和时间)。

问题二:git log 显示当前分支的日志。提交 16bc8486 不是其中的一部分。据我所知(我不完全确定)垃圾收集器迟早会把它拿走,如果它发现没有任何引用它(git gc --help)..

关于git - 提交的 SHA-1 是否仅根据树的内容计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8873169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com