Git コミットが署名されているかどうかを確認する方法

GitGitBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、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(+)

2 つ目の署名されていないコミットができたので、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-signaturegit verify-commit を使用して署名されていないコミットを識別する方法を理解することは、署名付きコミットを扱う上での最初のステップです。

まとめ

この実験では、Git のコミットが署名されているかどうかを確認する方法を学びました。まず、git log --show-signature コマンドを使用して、プロジェクト履歴内のすべてのコミットの署名状態を表示しました。このコマンドは、コミットの信憑性を迅速に評価するために重要です。

次に、git verify-commit コマンドを調べました。このコマンドを使用すると、コミットのハッシュを使って特定のコミットの署名を検証できます。これは、ターゲットとする検証に便利です。最後に、署名されていないコミットをテストし、署名を確認する際にどのように表示されるかを理解しました。これらのステップにより、Git でコミットの信憑性を検証する方法についての基本的な理解が得られます。