对于实验的缘故,可以说你的git log
确定了以下承诺是否仅基于树的内容计算提交的SHA-1?
commit 16bc8486fb34cf9a6faf0f7df606ae72ad9ea438 // added 2nd file
commit 9188f9a25b045f130b08888bc3f638099fa7f212 // initial commit
承诺,.git/refs/heads/master
点16bc8486fb34cf9a6faf0f7df606ae72ad9ea438后。
比方说,在此之后,我手动编辑.git/refs/heads/master
文件指向9188f9a25b045f130b08888bc3f638099fa7f212
在这一点上,git的状态确认,新提交的文件是需要一定的关注。这是我第二次提交之前处理的文件。
如果我不提交它.. git log
现在显示
commit b317f67686f9e6ab1eaabf47073b401d677205d5 // 2nd file committed for the 2nd time
commit 9188f9a25b045f130b08888bc3f638099fa7f212 // initial commit
问题1:
你会发现,SHA
散列的第一次之间的不同我犯了第二个文件和现在。这是为什么?文件的内容没有改变,它仍然是一样的确切文件。
问题2
在这一点上,发生了什么事原本第二的承诺?当我做git show 16bc8486
时,它显示这个提交。但它不会出现在git log
的历史记录中。
有趣的阅读:http://book.git-scm.com/1_the_git_object_model.html – Mat 2012-01-15 20:42:01