Как проверить, подписан ли коммит в Git

GitGitBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как проверить, подписан ли коммит (коммит - это запись о внесенных изменениях в репозиторий Git) в Git. Подписывание коммитов является важной практикой для проверки подлинности и целостности истории проекта.

Путем практического выполнения шагов вы узнаете, как использовать команду git log --show-signature для просмотра информации о подписи коммитов и команду git verify-commit для проверки подписи конкретного коммита. Вы также научитесь тестировать и определять не подписанные коммиты, получив полное представление о том, как обеспечить надежность вашего Git - репозитория.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560065{{"Как проверить, подписан ли коммит в Git"}} git/status -.-> lab-560065{{"Как проверить, подписан ли коммит в Git"}} git/commit -.-> lab-560065{{"Как проверить, подписан ли коммит в Git"}} git/log -.-> lab-560065{{"Как проверить, подписан ли коммит в Git"}} end

Запуск команды git log --show-signature

На этом этапе мы узнаем, как просматривать подписи коммитов с помощью команды git log. Подписывание коммитов - это способ проверить личность того, кто сделал коммит, добавляя дополнительный уровень доверия к истории проекта.

Сначала перейдите в каталог проекта, если вы еще не находитесь в нем. Помните, наш проект находится по пути ~/project/my-time-machine.

cd ~/project/my-time-machine

Теперь давайте посмотрим журнал коммитов с опцией --show-signature. Эта опция сообщает Git отображать информацию о подписи для каждого коммита, если она существует.

git log --show-signature

Вы должны увидеть журнал предыдущих коммитов, и так как мы еще не настроили подписывание коммитов, вы не увидите отображенной информации о подписях. Вывод будет похож на следующий:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

Команда git log --show-signature важна для проверки подлинности коммитов в проекте. При работе в команде или при вкладе в открытые исходные проекты подписи коммитов помогают убедиться, что коммиты, которые вы просматриваете или используете, приходят от надежных источников. Без подписей сложнее быть уверенным в происхождении изменений.

В следующих шагах мы узнаем, как настроить Git для подписывания ваших коммитов и как проверить эти подписи.

Использование команды git verify-commit для проверки

На этом этапе мы узнаем, как использовать команду git verify-commit для проверки подписи конкретного коммита. Эта команда полезна, когда вы хотите проверить подлинность одного коммита, а не просматривать статус подписей всех коммитов в журнале.

Сначала убедитесь, что вы находитесь в каталоге проекта:

cd ~/project/my-time-machine

Для использования команды git verify-commit вам нужен хэш коммита (уникальный идентификатор), который вы хотите проверить. Вы можете получить этот хэш из вывода команды git log. Для нашего первого коммита хэш будет длинной строкой символов. Вам достаточно первых нескольких символов (обычно 7 символов хватает) для идентификации коммита.

Давайте получим хэш коммита с помощью команды git log --oneline:

git log --oneline

Это покажет упрощенный вывод журнала, например:

a1b2c3d (HEAD -> master) Send a message to the future

Часть a1b2c3d - это сокращенный хэш коммита. Скопируйте этот хэш.

Теперь используйте команду git verify-commit, за которой следует хэш коммита. Замените YOUR_COMMIT_HASH на фактический скопированный хэш:

git verify-commit YOUR_COMMIT_HASH

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

object YOUR_COMMIT_HASH
type commit
tag -1
tree 8a9b0c1d2e3f4g5h6i7j8k9l0m1n2o3p4q5r6s7t
parent u1v2w3x4y5z6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
author Jane Doe <[email protected]> 1678886400 +0000
committer Jane Doe <[email protected]> 1678886400 +0000

Send a message to the future

Команда git verify-commit - это мощный инструмент для проверки деталей коммита, включая статус его подписи. Она помогает вам убедиться, что коммит не был изменен и что он исходит от надежного источника, что является важным условием для сохранения целостности истории проекта.

На следующем этапе мы создадим новый коммит и увидим, как Git обрабатывает не подписанные коммиты при попытке их проверки.

Тестирование не подписанных коммитов

На этом этапе мы создадим еще один коммит без подписи и посмотрим, как Git обрабатывает его при использовании команд проверки, которые мы узнали на предыдущих этапах. Это укрепит ваше понимание того, как Git идентифицирует не подписанные коммиты.

Сначала убедитесь, что вы находитесь в каталоге проекта:

cd ~/project/my-time-machine

Давайте добавим еще одну строку в файл message.txt:

echo "This is a second message." >> message.txt

Оператор >> добавляет текст в существующий файл. Теперь проверим статус:

git status

Вы должны увидеть, что файл message.txt был изменен:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

no changes added to commit (use "git add" and/or "git commit -a")

Теперь подготовим изменения к коммиту и создадим новый коммит. Мы не будем подписывать этот коммит.

git add message.txt
git commit -m "Add a second message"

Вы увидите вывод, подтверждающий новый коммит:

[master a1b2c3d] Add a second message
 1 file changed, 1 insertion(+)

Теперь, когда у нас есть второй, не подписанный коммит, давайте снова используем команду git log --show-signature, чтобы посмотреть историю:

git log --show-signature

Вы увидите оба коммита в журнале. Ни один из них не покажет информацию о подписи, так как мы еще не настроили подписывание.

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Add a second message

commit u1v2w3x4y5z6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

Наконец, давайте используем команду git verify-commit для нового коммита. Получите сокращенный хэш последнего коммита с помощью команды git log --oneline и замените YOUR_NEW_COMMIT_HASH ниже:

git log --oneline
a1b2c3d (HEAD -> master) Add a second message
u1v2w3x Send a message to the future

Теперь проверим новый коммит:

git verify-commit YOUR_NEW_COMMIT_HASH

Снова вывод покажет детали коммита, но не статус проверки подписи, подтверждая, что этот коммит также не подписан.

Этот этап показывает, что по умолчанию коммиты в Git не подписываются. Чтобы добавить уровень безопасности и доверия, вам нужно явно настроить Git для подписывания ваших коммитов, что является более сложной темой, которую мы не будем рассматривать в этом вводном курсе. Однако понимание того, как идентифицировать не подписанные коммиты с помощью команд git log --show-signature и git verify-commit, является первым шагом в работе с подписанными коммитами.

Резюме

В этом курсе (лабораторной работе) мы научились проверять, подписаны ли коммиты в Git. Мы начали с использования команды git log --show-signature для просмотра статуса подписей всех коммитов в истории проекта. Эта команда важна для быстрой оценки подлинности коммитов.

Затем мы изучили команду git verify-commit, которая позволяет проверить подпись конкретного коммита с использованием его хэша. Это полезно для целевой проверки. Наконец, мы проверили не подписанные коммиты, чтобы понять, как они выглядят при проверке подписей. Эти шаги дают базовое понимание того, как проверить подлинность коммитов в Git.