git tag --contains 커밋 실행
이 단계에서는 git tag --contains 명령을 사용하여 특정 커밋을 포함하는 태그를 찾는 방법을 배우겠습니다. 이는 프로젝트의 어떤 릴리스 또는 버전에 특정 변경 사항이 포함되어 있는지 알고 싶을 때 유용합니다.
먼저, 프로젝트 디렉토리에 있는지 확인해 보겠습니다. 터미널을 열고 my-time-machine 디렉토리로 이동합니다.
cd ~/project/my-time-machine
이제 몇 개의 커밋과 태그를 생성하여 작업해 보겠습니다. 새 파일을 추가하고 커밋을 생성합니다.
echo "Another message for the future" > message2.txt
git add message2.txt
git commit -m "Add a second message"
다음과 유사한 출력을 볼 수 있습니다.
[master <commit-hash>] Add a second message
1 file changed, 1 insertion(+)
create mode 100644 message2.txt
이제 이 커밋에 태그를 추가해 보겠습니다. v1.0이라고 부르겠습니다.
git tag v1.0
이 명령은 출력을 생성하지 않지만, 최신 커밋을 가리키는 태그를 생성했습니다.
태그 없이 다른 커밋을 생성해 보겠습니다.
echo "A third message" > message3.txt
git add message3.txt
git commit -m "Add a third message"
다음과 유사한 출력을 볼 수 있습니다.
[master <commit-hash>] Add a third message
1 file changed, 1 insertion(+)
create mode 100644 message3.txt
이제 두 개의 커밋과 하나의 태그가 있습니다. git log --oneline을 사용하여 커밋 기록을 확인해 보겠습니다.
git log --oneline
다음과 유사한 내용을 볼 수 있습니다 (커밋 해시는 다를 것입니다).
<commit-hash> (HEAD -> master) Add a third message
<commit-hash> (tag: v1.0) Add a second message
<commit-hash> Send a message to the future
v1.0 태그가 "Add a second message" 커밋과 연결되어 있음을 확인하십시오.
이제 "Add a second message" 커밋을 포함하는 태그를 찾아보겠습니다. 이를 위해 커밋 해시가 필요합니다. git log --oneline 출력에서 (tag: v1.0) 옆에 있는 커밋 해시를 복사합니다.
<commit-hash>를 복사한 실제 해시로 바꾸고 다음 명령을 실행합니다.
git tag --contains <commit-hash>
출력에 v1.0이 표시되어야 합니다. 이 태그가 해당 커밋을 직접 가리키기 때문입니다.
이제 첫 번째 커밋 ("Send a message to the future") 을 포함하는 태그를 찾아보겠습니다. git log --oneline에서 해당 커밋의 커밋 해시를 복사합니다.
<first-commit-hash>를 실제 해시로 바꾸고 실행합니다.
git tag --contains <first-commit-hash>
출력에 여전히 v1.0이 표시되어야 합니다. 이는 v1.0이 첫 번째 커밋의 후손인 커밋에 있기 때문입니다. --contains 플래그는 지정된 커밋이 태그가 가리키는 커밋의 조상인지 확인합니다.
이 명령은 특정 버그 수정 또는 기능이 소프트웨어의 어떤 버전에 포함되어 있는지 확인해야 할 때 매우 유용합니다.