Каждый коммит-объект содержит оба поля. Вы можете проверить необработанный объект фиксации, используя операцию командной строки git cat-file -p
. Например:
$ git cat-file -p 83232e38648b51abbcbdb56c94632b6906cc85a6 | sed 's/@/ /'
tree 894962f72d565687c409f018060fdefa20e5f3fe
parent aa8c8d914e4ae709e4fd025f359594f62653d9e5
author Junio C Hamano <gitster pobox.com> 1556175832 +0900
committer Junio C Hamano <gitster pobox.com> 1556178085 +0900
The seventh batch
Signed-off-by: Junio C Hamano <gitster pobox.com>
Как только коммит сделан, его нельзя изменить: хэш-идентификатор коммита, в данном случае 83232e38648b51abbcbdb56c94632b6906cc85a6
, является криптографической контрольной суммой содержимого коммита. Если бы я взял этот текст, изменил имена и сделал новый коммит из результата, я бы получил другой хэш-идентификатор коммита.
Теперь я мог бы сделать это, и, сделав это, я мог бы затем скопировать все непосредственные нижестоящие коммиты - всех потомков 83232e38648b51abbcbdb56c94632b6906cc85a6
- в новые и разные коммиты, в которых мой новый коммит имеет вид их родители). Тогда мне нужно будет скопировать этих детей-коммитов, детей их детей и т. Д., Чтобы вы поверили, что моя копия 83232e38648b51abbcbdb56c94632b6906cc85a6
- это копия, которую вы должны использовать. Если в этой скопированной цепочке есть какие-либо подписанные коммиты или подписанные аннотированные теги, я не смог бы подписать их должным образом, если бы у меня не было ключа подписи Хунио Хамано. Таким образом, вы могли бы сказать, что я сделал это, и даже если нет никаких ключей подписи, вы, вероятно, все еще сможете сказать, потому что репозиторий Git, который я вам предложил, с этими скопированными заменами, не будет соответствовать копия, которую вы взяли ранее, с оригиналами в ней.
Итак, тот факт, что в слиянии есть имя Алисы - при условии, что ваш GUI не лжет вам - означает, что в слиянии есть имя Алисы. Это не означает, что Алиса на самом деле сделала это, поскольку Боб мог настроить свой Git так, чтобы претендовать на то, чтобы быть Алисой на время слияния Боба. Если вы хотите проверить, кто сделал коммит, вам понадобится также какая-то цифровая подпись, либо для коммитов, либо для аннотированных тегов. (Подписание каждого коммита - большая боль, поэтому разработчики Git только подписывают свои аннотированные теги.)
Почему и как это произошло, мы не можем догадаться. Вам решать, верить ли Бобу, когда он говорит, что он не делал это как шутку. Вы должны будете наблюдать, как это происходит на самом деле, и провести расследование оттуда.