Git 하위 모듈 나열

John Wachira 2024년2월15일
  1. Git 서브모듈이란
  2. Git 하위 모듈 만들기
  3. 하위 모듈에 대한 일반적인 Git 명령
  4. Git의 하위 모듈 나열
Git 하위 모듈 나열

이 기사에서는 Git 하위 모듈에 대해 설명합니다. 우리는 그것들이 무엇인지, 서브모듈의 목적과 일반적인 작업 흐름을 다룰 것입니다.

Git 하위 모듈을 사용하면 한 저장소를 다른 저장소의 하위 디렉토리로 유지할 수 있습니다. 간단히 말해서 하위 모듈은 특정 시간 프레임의 다른 저장소에 대한 참조입니다.

Git 서브모듈이란

위의 설명으로 문제가 해결되지 않으면 이것이 해결되어야 합니다.

Git 하위 모듈은 다른 리포지토리의 커밋을 참조하는 호스트 리포지토리의 레코드에 비유할 수 있습니다. 일반적으로 하위 모듈은 정적이며 지정된 커밋을 추적합니다.

분기 또는 참조를 추적하지 않으며 변경 사항이 호스트 리포지토리에 푸시될 때 업데이트되지 않습니다.

Git은 저장소에 하위 모듈을 생성할 때마다 .gitmodules 파일을 생성합니다. 이 파일에는 하위 모듈의 메타데이터와 리포지토리와의 매핑이 포함되어 있습니다.

여러 하위 모듈을 생성하면 여러 gitmodules 파일이 생성됩니다.

Git 하위 모듈 만들기

우리가 스스로에게 물어야 하는 첫 번째 질문은 언제 서브모듈을 생성해야 하는지입니다.

다음은 Git 하위 모듈을 만드는 것이 가장 좋은 몇 가지 시나리오입니다.

  1. 하위 프로젝트나 외부 구성 요소가 빠르게 변경되면 코드를 특정 커밋으로 잠그는 것이 가장 좋습니다. API를 손상시킬 수 있는 향후 변경 사항이 예상되는 경우에도 동일하게 적용됩니다.
  2. 구성 요소를 공급업체 종속성으로 추적할 때. 이것은 일반적으로 특정 구성 요소를 정기적으로 업데이트하지 않을 때 발생합니다.
  3. 특정 시간에 제3자의 변경 사항을 통합하려는 경우. 자주 업데이트하지 않을 때 가장 잘 작동합니다.

하위 모듈에 대한 일반적인 Git 명령

명령줄에서 몇 가지 일반적인 사용 옵션을 살펴보겠습니다.

Git 하위 모듈 추가

git add submodule 명령을 사용하여 호스트 저장소에 새 하위 모듈을 만듭니다. 다음은 Git 하위 모듈을 생성할 때의 일반적인 워크플로입니다.

$ git submodule add <Repo URL>

git submodule add 명령에는 저장소를 가리키는 URL 매개변수가 필요합니다. Git은 하위 모듈을 복제하고 git status 명령을 실행하여 새 저장소 상태를 볼 수 있습니다.

예를 들어 보겠습니다. Delftscopetech 저장소에 하위 모듈을 추가해 보겠습니다.

자식 하위 모듈 추가 명령

이제 아래와 같이 git status 명령을 실행할 수 있습니다.

$ git status

자식 상태 명령

위에서 볼 수 있듯이 이제 .gitmodulesLearn-Submodules라는 두 개의 새 파일이 있습니다. 파일을 추가하고 변경 사항을 커밋할 수 있습니다.

git 하위 모듈 초기화

git submodule init 명령을 실행하여 .gitmodules 파일의 하위 모듈 매핑을 로컬 구성 파일로 복사합니다. 리포지토리에 여러 하위 모듈이 있을 때 클러치에 들어옵니다.

Git의 하위 모듈 나열

git submodule init 명령은 .gitmodules 파일에 의존합니다. 동일한 파일에 의존하여 모든 하위 모듈의 목록을 볼 수 있습니다.

먼저 파일을 구문 분석해야 합니다. 우리는 다음을 실행합니다:

$ git config --file .gitmodules --name-only --get-regexp path

그러면 다음을 실행할 수 있습니다.

$ git config --file .gitmodules --get-regexp path | awk '{ print $2 }'

위의 명령은 저장소에 있는 하위 모듈의 경로를 표시합니다.

작가: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

관련 문장 - Git Submodule