РЕДАКТИРОВАТЬ: Если вы отрицаете мой вопрос, есть порядочность, чтобы сказать, почему.
В Pro Git Ch9 автор говорит:
Git обычно создает дерево, беря состояние вашей промежуточной области или индекса и записывая из него объект дерева.
Мой вопрос: как git узнает , что из двух последовательных записей индекса, из которых создается объект Tree?
Например (случайные числа означают 40-символьные SHA1 - я только что их придумал):
$ echo 'First change' > one.txt
$ git add one.txt
$ find .git/objects -type f
.git/objects/1f/755a7fffe4 //first index entry
$ echo 'Second change' > one.txt
$ git add one.txt
$ find .git/objects -type f
.git/objects/2d/234asdf2 //second index entry
$ git commit -a -m "Initial commit"
$ git cat-file master^{tree}
100644 blob 2d234asdf2 one.txt //How did it know not to take 1f755??
Это просто смотрит на временные метки BLOB-объектов?
Кроме того - что происходит с первым созданным BLOB-объектом - никто не ссылается на него. Это просто разрушено или забыто?