видимо одни и те же коммиты дают разные ша1, почему? - PullRequest
13 голосов
/ 12 апреля 2011

После перезаписи истории поддерева из репозитория с помощью моего скрипта я сравнил его с тем, что будет делать git filter-branch ... для того же поддерева.Я вижу, что начальные коммиты имеют разные sha1, хотя я ожидал, что они будут идентичны (следствием этого является то, что все коммиты из обеих историй имеют разные sha1).

Выполнение git show --format=raw <commit-sha1> на обоих коммитах дает абсолютно одинаковый результат(за исключением первой строки, которая является commit <commit-sha1>, представляющей результат).

Объектные файлы совершенно разные, но, поскольку они являются двоичными файлами, я не могу выяснить первопричину.

Если предположить, что все версии git соответствуют друг другу, что может объяснить наличие двух разных sha1?

Спасибо

1 Ответ

14 голосов
/ 12 апреля 2011

Входные данные Git для хэша коммита включают метаданные, такие как SHA1 дерева, SHA1 родителя, имя коммитера, электронную почту и дату фиксации, а также имя автора, электронную почту и дату фиксации.Поэтому, когда вы переписываете историю, дата коммитера и дерево (так как вы сделали filter-branch), вероятно, изменились, следовательно, разница в SHA1 вашего коммита.

Для получения дополнительной информации о формате коммита,вы можете использовать git cat-file commit <sha> или найти раздел Git Objects в Git Book .

...