Git 커밋이 최신인지 확인하는 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 특정 Git 커밋이 저장소의 최신 커밋인지 확인하는 방법을 배우게 됩니다. git log -1 명령을 사용하여 HEAD가 가리키는 가장 최근 커밋을 확인하고, git rev-parse HEAD를 사용하여 해당 커밋의 고유 식별자를 검색하는 방법을 살펴보겠습니다. 마지막으로, HEAD가 프로젝트 기록에서 현재 위치를 어떻게 나타내는지 이해하기 위해 이전 커밋으로 이러한 명령을 테스트할 것입니다.

git log -1 실행하여 HEAD 확인

이 단계에서는 git log -1 명령을 사용하여 Git 저장소에서 가장 최근 커밋을 빠르게 확인하는 방법을 배우겠습니다. 이는 전체 로그를 보지 않고도 프로젝트 기록의 현재 상태를 확인하는 편리한 방법입니다.

먼저, my-time-machine 디렉토리에 있는지 확인하십시오. 그렇지 않은 경우, cd 명령을 사용하여 해당 디렉토리로 이동합니다.

cd ~/project/my-time-machine

이제 최신 커밋을 확인하는 명령을 실행해 보겠습니다.

git log -1

다음과 유사한 출력을 볼 수 있습니다.

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 -1 명령은 현재 브랜치에서 마지막으로 수행된 커밋의 세부 정보를 보여줍니다. -1 옵션은 Git 에게 가장 최근 커밋만 표시하도록 지시합니다.

(HEAD -> master) 부분을 주목하십시오. HEAD는 현재 브랜치의 최신 커밋을 항상 가리키는 포인터입니다. 이 경우, master 브랜치의 최신 커밋을 가리키고 있습니다. HEAD를 프로젝트 타임라인에서 현재 위치라고 생각하십시오. 새 커밋을 만들면 HEAD는 자동으로 해당 새 커밋을 가리키도록 앞으로 이동합니다.

HEAD를 이해하는 것은 매우 중요합니다. 많은 Git 명령이 HEAD가 가리키는 커밋에서 작동하기 때문입니다. 다음 단계에서는 HEAD가 특정 커밋 식별자와 어떻게 관련되는지 살펴보겠습니다.

git rev-parse HEAD 로 커밋 비교

이전 단계에서 git log -1HEAD가 가리키는 커밋을 표시하는 것을 확인했습니다. 이제 git rev-parse HEAD 명령을 사용하여 HEAD가 현재 가리키는 커밋의 고유 식별자 (SHA-1 해시) 만 얻어보겠습니다.

여전히 ~/project/my-time-machine 디렉토리에 있는지 확인하십시오.

다음 명령을 실행합니다.

git rev-parse HEAD

최신 커밋의 전체 SHA-1 해시인 긴 문자열과 숫자를 볼 수 있습니다.

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9

이 출력을 이전 단계의 git log -1 출력에서 본 커밋 해시와 비교하십시오. 동일해야 합니다!

git rev-parse 명령은 다양한 유형의 Git 참조 (브랜치 이름, 태그 또는 HEAD 등) 를 해당 SHA-1 해시로 변환하는 데 자주 사용되는 하위 수준 Git 명령입니다. Git 에서 스크립팅 및 자동화를 위한 강력한 도구입니다.

git rev-parse HEAD를 사용하면 본질적으로 Git 에게 "현재 위치 (HEAD) 가 나타내는 정확한 커밋 ID 는 무엇입니까?"라고 묻는 것입니다. 이렇게 하면 현재 작업 중인 스냅샷의 원시 식별자가 제공됩니다.

원시 커밋 해시를 얻는 방법을 이해하는 것은 중요합니다. 이러한 해시는 Git 이 프로젝트의 특정 버전을 추적하는 기본적인 방법이기 때문입니다. 이러한 해시를 사용하여 프로젝트 기록의 모든 지점을 참조할 수 있습니다.

과거 커밋으로 테스트

이전 단계에서 HEAD와 해당 커밋 해시를 얻는 방법에 대해 배웠습니다. 이제 Git 이 이전 커밋을 어떻게 참조하는지 살펴보겠습니다.

현재, 우리 저장소에는 하나의 커밋만 있습니다. 이전 커밋을 참조하는 방법을 시연하기 위해 다른 커밋을 만들어야 합니다.

먼저, message.txt 파일에 다른 줄을 추가해 보겠습니다. >>와 함께 echo 명령을 사용하여 파일에 텍스트를 추가합니다.

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 --oneline

--oneline 옵션은 로그를 간결하게 보여줍니다. 다음과 유사한 내용을 볼 수 있습니다 (해시는 다를 것입니다).

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

가장 위에 있는 커밋이 가장 최신 커밋이며, HEAD가 가리키는 곳입니다. 그 아래의 커밋이 이전 커밋입니다.

Git 은 HEAD를 기준으로 커밋을 참조하는 방법을 제공합니다. HEAD 바로 이전의 커밋은 HEAD~1 또는 HEAD^로 참조할 수 있습니다. git rev-parse를 사용하여 이전 커밋의 해시를 얻어보겠습니다.

git rev-parse HEAD~1

가장 처음 만든 커밋의 해시를 볼 수 있습니다.

e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3

이 해시는 git log --oneline 출력에서 "Send a message to the future" 커밋의 해시와 일치해야 합니다.

HEAD~2, HEAD~3 등을 사용하여 기록에서 더 이전의 커밋을 참조할 수 있습니다. 이 상대적 참조는 프로젝트 기록을 탐색하고 특정 과거 버전에 대한 작업을 수행하는 데 매우 유용합니다.

요약

이 랩에서는 HEAD의 역할을 이해하여 Git 커밋이 최신인지 확인하는 방법을 배웠습니다. git log -1 명령을 사용하여 가장 최근 커밋의 세부 정보를 보고 HEAD가 이 커밋을 가리킨다는 것을 확인했습니다. 그런 다음 git rev-parse HEAD를 사용하여 HEAD가 현재 가리키는 커밋의 고유한 SHA-1 해시를 검색했습니다. 이는 현재 브랜치의 최신 커밋을 나타냅니다.