Featured image of post Подписываем Git коммиты

Подписываем Git коммиты

Как подписывать коммиты GPG и SSH ключами

Как настроить подпись коммитов и тегов в Git с помощью GPG и SSH

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


Основной файл конфигурации Git

Основной файл конфигурации ~/.gitconfig задаёт общие параметры для всех репозиториев. В нём можно указать имя пользователя, включить обязательную подпись коммитов и тегов, а также подключить дополнительные конфигурационные файлы для отдельных групп проектов.

Пример базового файла конфигурации:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# ~/.gitconfig
[user]
  name = John Smith

[commit]
  gpgsign = true

[tag]
  gpgSign = true

[includeIf "gitdir:~/Personal/"]
  path = ~/Personal/.gitconfig

[includeIf "gitdir:~/Work/"]
  path = ~/Work/.gitconfig

С помощью директив [includeIf] Git будет подключать нужные конфигурации в зависимости от расположения репозитория.


Конфигурация для личных проектов

Если Вы используете SSH для подписи в личных проектах, настройка будет выглядеть следующим образом. В конфигурационном файле ~/Personal/.gitconfig задаётся личный email, а формат подписи указывается как ssh. Команда, прописанная в настройках, позволяет Git автоматически находить нужный ключ в ssh-agent.

1
2
3
4
5
6
7
8
9
# ~/Personal/.gitconfig
[user]
  email = [email protected]

[gpg]
  format = ssh

[gpg "ssh"]
  defaultKeyCommand = sh -c "ssh-add -L | awk '$3~/^personal@a\\.com$/{print \"key::\"$0}'"

Эта настройка позволяет использовать ключ, уже добавленный в ssh-agent, что упрощает процесс подписи.


Конфигурация для рабочих проектов

Для рабочих проектов часто используется GPG. В конфигурации ~/Work/.gitconfig указывается рабочий email и идентификатор GPG-ключа, который будет использоваться для подписи.

Если у Вас ещё нет GPG-ключа, его можно создать с помощью команды:

1
gpg --full-gen-key

Для получения идентификатора ключа выполните:

1
gpg --list-keys

Пример файла конфигурации для рабочих проектов:

1
2
3
4
5
6
7
# ~/Work/.gitconfig
[user]
  email = [email protected]
  signingKey = 35C1A64CD7FC0AB6EB66756B2445463C3234ECE1

[gpg]
  format = openpgp

С помощью этого файла рабочие коммиты и теги будут подписаны с использованием указанного GPG-ключа.


Теперь Ваш Git настроен на автоматическое использование нужного ключа в зависимости от репозитория. Это поможет Вам поддерживать порядок и прозрачность при работе с коммитами и тегами.

Licensed under Apache License, Version 2.0
Обновлено дек. 10, 2024 14:01 +0200
All rights reserved
Создано при помощи Hugo
Тема Stack, дизайн Jimmy