10

Я только что понял, что забыл сказать git использовать мой ключ GPG. Я сделал несколько коммитов, не подписывая их. Должен ли я вернуться и подписать их?

Я не имею в виду, стоит ли мне подписывать теги, но я решил подписать коммиты сами. Я не верю, что могу придумать причину, кроме как иметь искаженную историю мерзавцев, которая может быть или не быть тем, что я написал. Я верю, что GitHub не возится с моей историей Git, и я являюсь единственным автором около 99% моих проектов, так что мне следует это делать?

Я нашел этот ответ, поэтому я знаю, что теперь это возможно, но с философской точки зрения, я должен?

1 ответ1

12

Если коммиты уже опубликованы, вам не следует переписывать их для каких-либо целей (кроме устранения случайных утечек данных), так как это приведет к изменению их идентификаторов коммитов. (Помните, что идентификатор каждого коммита основан на хешах SHA-1 его содержимого и родительского коммита.)

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

Но по той же причине вам не нужно явно подписывать эти старые коммиты, по крайней мере, не в целях обеспечения целостности данных. Поскольку каждый коммит содержит основанные на SHA-1 идентификаторы его родителей, проверка любого отдельного коммита также неявно проверяет всю его историю через цепочку хеширования. Неважно, что цепь немного длиннее или короче.

С другой стороны, если вы не доверяете SHA-1 в целях безопасности, вам следует считать подписывание коммитов совершенно бесполезным, поскольку содержимое файла коммитов также ссылается на хэши SHA-1. Единственное, что вы подписываете напрямую (а не его хэш), это сообщение коммита.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .