Git 저장소가 서브모듈에 있는지 확인하는 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 Git 저장소가 다른 Git 저장소 내의 서브모듈인지 확인하는 다양한 방법을 살펴봅니다. 먼저 Git 의 기본 작동에 필수적이며 표준 Git 저장소를 나타내는 숨겨진 .git 디렉토리의 존재 여부를 검토합니다.

그 다음, 현재 디렉토리가 Git 저장소의 일부인지, 특히 슈퍼프로젝트 내의 서브모듈로 존재하는지 식별하는 강력한 도구인 git rev-parse --show-superproject-working-tree 명령을 사용합니다. 마지막으로, git config를 사용하여 서브모듈 상태를 확인합니다.

디렉토리에서 .git 파일 확인

이 단계에서는 Git 이 프로젝트 디렉토리 내에 정보를 저장하는 방법을 살펴봅니다. git init을 사용하여 Git 저장소를 초기화하면 Git 은 .git이라는 숨겨진 디렉토리를 생성합니다. 이 디렉토리에는 Git 이 프로젝트의 기록을 추적하는 데 사용하는 모든 필수 파일과 객체가 포함되어 있습니다.

my-time-machine 디렉토리로 돌아가서 이 숨겨진 디렉토리를 찾을 수 있는지 확인해 보겠습니다.

먼저, 올바른 디렉토리에 있는지 확인합니다.

cd ~/project/my-time-machine

이제 숨겨진 파일 (점으로 시작하는 파일) 을 포함한 모든 파일을 보려면 ls -a 명령을 사용합니다.

ls -a

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

.
..
.git
message.txt

.git 디렉토리가 나열된 것을 확인하세요. 이곳에서 Git 의 모든 마법이 일어납니다! 여기에는 모든 커밋, 브랜치 및 구성을 포함하여 프로젝트의 전체 기록이 포함되어 있습니다.

Git 이 데이터를 .git 디렉토리에 저장한다는 것을 이해하는 것은 Git 의 추적 정보가 어디에 있는지 보여주기 때문에 중요합니다. 이 디렉토리를 삭제하면 프로젝트의 전체 Git 기록을 잃게 됩니다.

다음 단계에서는 디렉토리가 Git 저장소인지 확인하는 다른 방법과, 본질적으로 다른 Git 저장소 내에 중첩된 Git 저장소인 서브모듈을 Git 이 처리하는 방법을 살펴보겠습니다.

git rev-parse --show-superproject-working-tree 사용

이전 단계에서 .git 디렉토리가 존재하면 Git 저장소를 나타낸다는 것을 확인했습니다. 그러나 때로는 프로젝트의 하위 디렉토리 깊숙이 들어가서 해당 디렉토리가 Git 저장소의 일부인지 빠르게 확인하고 싶을 수 있습니다. git rev-parse 명령은 이를 위한 강력한 도구입니다.

특히, --show-superproject-working-tree 옵션은 현재 디렉토리가 Git 저장소 내부에 있는지 여부를 알려주고, 그렇다면 서브모듈인 경우 메인 저장소 ( "슈퍼프로젝트") 의 최상위 디렉토리 경로를 표시합니다. 서브모듈이 아닌 경우 현재 저장소의 최상위 디렉토리 경로를 표시합니다.

my-time-machine 디렉토리에서 시도해 보겠습니다.

먼저, 올바른 디렉토리에 있는지 확인합니다.

cd ~/project/my-time-machine

이제 명령을 실행합니다.

git rev-parse --show-superproject-working-tree

my-time-machine은 일반 Git 저장소이며 다른 저장소 내의 서브모듈이 아니므로 이 명령은 my-time-machine 저장소의 최상위 디렉토리 경로를 출력합니다. 다음과 유사한 출력을 볼 수 있습니다.

/home/labex/project/my-time-machine

이는 현재 디렉토리가 실제로 Git 저장소 내에 있음을 확인하고 해당 저장소의 루트 경로를 보여줍니다.

Git 저장소가 아닌 디렉토리에 있었다면 이 명령은 Git 저장소가 아니라는 오류 메시지를 생성합니다. 이로 인해 git rev-parse --show-superproject-working-tree는 스크립팅 또는 디렉토리의 Git 상태를 빠르게 확인하는 데 유용한 명령이 됩니다.

git rev-parse와 같은 명령을 이해하면 Git 과 더 깊이 상호 작용할 수 있으며 작업을 자동화하거나 Git 문제를 해결하는 데 매우 유용할 수 있습니다.

git config 로 서브모듈 확인

이 단계에서는 Git 서브모듈과 Git 구성을 사용하여 서브모듈을 식별하는 방법에 대해 간략하게 살펴보겠습니다. 이 랩에서는 서브모듈을 생성하지 않지만, 서브모듈을 확인하는 방법을 이해하는 것은 유용합니다.

Git 서브모듈을 사용하면 하나의 Git 저장소를 다른 저장소 안에 포함할 수 있습니다. 이는 프로젝트가 특정 버전의 외부 라이브러리 또는 구성 요소에 종속될 때 자주 사용됩니다. 서브모듈을 추가하면 Git 은 메인 프로젝트가 사용하고 있는 서브모듈 저장소의 특정 커밋을 기록합니다.

서브모듈에 대한 정보는 메인 저장소의 구성에 저장됩니다. git config 명령을 사용하여 Git 구성을 볼 수 있습니다.

my-time-machine 저장소의 구성을 살펴보겠습니다. 서브모듈이 없으므로 서브모듈 관련 항목은 표시되지 않지만, 구성이 어떻게 보이는지 확인하는 것이 좋습니다.

my-time-machine 디렉토리에 있는지 확인합니다.

cd ~/project/my-time-machine

이제 로컬 Git 구성을 봅니다.

git config --local --list

설정에서 구성한 사용자 이름과 이메일, 그리고 기본 브랜치를 보여주는 다음과 유사한 출력을 볼 수 있습니다.

user.name=Jane Doe
user.email=jane.doe@example.com
init.defaultbranch=master

이 저장소에 서브모듈이 있는 경우, 출력에 submodule.로 시작하는 추가 줄이 표시되며, 그 뒤에 서브모듈의 이름과 URL 또는 경로가 옵니다.

예를 들어, utils라는 서브모듈이 있는 경우 다음과 같은 줄이 표시될 수 있습니다.

submodule.utils.path=utils
submodule.utils.url=https://github.com/example/utils.git

git config --local --list의 출력을 검사하여 저장소에 서브모듈이 포함되어 있는지 확인하고 해당 구성 세부 정보를 볼 수 있습니다. 이는 Git 프로젝트의 구조와 종속성을 이해하는 또 다른 방법입니다.

이것으로 Git 저장소 및 서브모듈 식별에 대한 간략한 탐색을 마칩니다. .git 디렉토리를 찾는 방법, git rev-parse를 사용하여 저장소 루트를 찾는 방법, 그리고 서브모듈 정보를 위해 Git 구성을 확인하는 방법을 배웠습니다.

요약

이 랩에서는 디렉토리가 Git 저장소인지 확인하고 서브모듈인지 식별하는 방법을 배웠습니다. 먼저 Git 저장소의 핵심이며 모든 기록과 구성을 포함하는 숨겨진 .git 디렉토리의 존재를 조사했습니다.

그런 다음, 디렉토리가 Git 저장소 내에 있는지 확인하고 서브모듈인 경우 슈퍼프로젝트의 작업 트리를 식별하는 보다 강력한 방법으로 git rev-parse --show-superproject-working-tree 명령을 살펴보았습니다. 마지막으로, git config를 사용하여 서브모듈 상태를 확인했습니다.