소개
이 랩에서는 Git 커밋이 서명되었는지 확인하는 방법을 배우게 됩니다. 커밋 서명은 프로젝트 기록의 진위성과 무결성을 검증하는 데 중요한 실천 방법입니다.
실습 단계를 통해 git log --show-signature 명령을 사용하여 커밋의 서명 정보를 확인하고, git verify-commit 명령을 사용하여 특정 커밋의 서명을 확인하는 방법을 살펴볼 것입니다. 또한 서명되지 않은 커밋을 테스트하고 식별하는 방법을 배우면서 Git 저장소의 신뢰성을 보장하는 방법에 대한 포괄적인 이해를 얻게 될 것입니다.
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 <jane.doe@example.com>
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 <jane.doe@example.com> 1678886400 +0000
committer Jane Doe <jane.doe@example.com> 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 <jane.doe@example.com>
Date: Mon Aug 7 10:00:00 2023 +0000
Add a second message
commit u1v2w3x4y5z6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
Author: Jane Doe <jane.doe@example.com>
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 에서 커밋 진위성을 확인하는 방법에 대한 기본적인 이해를 제공합니다.



