Git 저장소에 커밋이 있는지 확인하는 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 Git 저장소에 커밋이 있는지 확인하는 방법을 배우게 됩니다. 전체 커밋 기록을 보기 위해 git log 명령을 사용하고, 커밋 수를 빠르게 얻기 위해 git rev-list --count HEAD 명령을 사용하는 두 가지 주요 방법을 살펴볼 것입니다.

먼저, 기존 커밋이 있는 저장소의 상세 기록을 보기 위해 git log를 사용합니다. 그런 다음, 커밋의 숫자 개수를 얻기 위해 git rev-list --count HEAD를 사용합니다. 마지막으로, 커밋이 없는 빈 저장소에서 이러한 방법이 어떻게 작동하는지 이해하기 위해 테스트합니다.

git log 실행하여 기록 확인

이 단계에서는 git log 명령을 사용하여 Git 저장소의 커밋 기록을 확인합니다. 이 명령은 프로젝트의 타임라인을 이해하고 변경 사항을 확인하는 데 필수적입니다.

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

cd ~/project/my-time-machine

이제 git log 명령을 실행합니다.

git log

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

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 명령은 프로젝트 기록을 볼 수 있는 창입니다. 더 많은 커밋을 만들면 각 커밋이 이 로그에 추가되어 모든 변경 사항의 연대기적 기록을 생성합니다. 이는 진행 상황을 추적하고, 프로젝트가 어떻게 발전했는지 이해하며, 특정 변경 사항이 언제 도입되었는지 확인하여 문제를 디버깅하는 데 매우 유용합니다.

커밋이 많은 경우 git log 출력은 상당히 길 수 있습니다. q를 눌러 로그 보기를 종료하고 터미널 프롬프트로 돌아갈 수 있습니다.

git rev-list --count HEAD 사용

이 단계에서는 git rev-list --count HEAD 명령을 사용하여 저장소에 얼마나 많은 커밋이 있는지 빠르게 확인하는 또 다른 방법을 배우게 됩니다. 이는 git log에 비해 커밋 수만 얻는 더 간결한 방법입니다.

여전히 ~/project/my-time-machine 디렉토리에 있는지 확인합니다.

이제 다음 명령을 실행합니다.

git rev-list --count HEAD

다음과 같이 단일 숫자가 출력되는 것을 볼 수 있습니다.

1

이 숫자는 현재 브랜치에 있는 총 커밋 수를 나타냅니다 (HEAD는 현재 브랜치의 최상단을 나타내며, 이 경우 master입니다). 지금까지 하나의 커밋만 만들었으므로 출력은 1입니다.

git rev-list 명령은 커밋 객체를 나열하는 강력한 도구입니다. --count 옵션과 함께 사용하면 지정된 참조 (이 경우 HEAD) 에서 도달할 수 있는 총 커밋 수를 제공합니다. 이는 프로젝트 기록에 얼마나 많은 저장 지점이 있는지 빠르게 확인해야 할 때 특히 유용합니다.

git log는 각 커밋에 대한 자세한 정보를 제공하는 반면, git rev-list --count는 프로젝트 기록 길이에 대한 간단한 숫자 요약을 제공합니다. 두 명령 모두 서로 다른 시나리오에서 유용합니다.

빈 Repository 테스트

이 단계에서는 아직 커밋이 없는 Git 저장소에서 git loggit rev-list --count HEAD를 실행할 때 어떤 일이 발생하는지 살펴봅니다. 이를 통해 저장소를 처음 초기화했을 때 첫 번째 랩에서 본 출력을 이해하는 데 도움이 됩니다.

먼저, 새롭고 빈 디렉토리를 만들고 그 안에 Git 저장소를 초기화해 보겠습니다. ~/project 디렉토리에 있는지 확인합니다.

cd ~/project
mkdir empty-repo
cd empty-repo
git init

빈 Git 저장소가 초기화되었음을 나타내는 메시지가 표시됩니다.

Initialized empty Git repository in /home/labex/project/empty-repo/.git/

이제 이 빈 저장소에서 git log를 실행해 보겠습니다.

git log

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

fatal: your current branch 'master' does not have any commits yet

이 메시지는 정확히 무슨 일이 일어나고 있는지 알려줍니다. 현재 브랜치 (master) 에 커밋이 없습니다. git log는 기록을 표시하려면 커밋이 필요하므로 표시할 내용이 없다고 보고합니다.

다음으로, git rev-list --count HEAD를 시도해 보겠습니다.

git rev-list --count HEAD

이번에는 출력 결과가 다음과 같습니다.

0

이것은 이해가 됩니다! 커밋이 없으므로 HEAD에서 도달할 수 있는 커밋 수는 0 입니다.

이러한 명령의 출력을 빈 저장소와 (하나의 커밋이 있는) my-time-machine 저장소와 비교하면 이러한 명령이 수행하는 작업을 더 잘 이해할 수 있습니다. git log는 커밋의 세부 정보를 표시하고, git rev-list --count는 간단한 수를 제공합니다. 두 명령 모두 저장소 기록의 상태를 정확하게 반영합니다.

이제 다음 단계에 필요하지 않으므로 empty-repo 디렉토리를 제거할 수 있습니다.

cd ~/project
rm -rf empty-repo

요약

이 랩에서는 Git 저장소에 커밋이 있는지 확인하는 방법을 배웠습니다. 먼저 git log 명령을 사용하여 자세한 커밋 기록을 보고, 커밋 해시, 작성자, 날짜 및 메시지를 포함한 출력 구조를 이해했습니다. 이 명령은 프로젝트 변경 사항의 연대기적 기록을 제공합니다. 그런 다음 git rev-list --count HEAD를 사용하여 현재 브랜치의 총 커밋 수를 직접 출력하는 보다 간결한 방법을 탐색했습니다. 마지막으로, 이러한 방법을 빈 저장소에서 테스트하여 커밋이 없을 때의 출력을 관찰하여 기록이 없는 저장소를 식별하는 방법을 시연했습니다.