Это хорошая идея, чтобы GPG подписывал старые коммиты git?

9

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

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

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

Алексис Эвелин
источник

Ответы:

12

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

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

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

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

user1686
источник