스택큐힙리스트

빈 Git 서브모듈 폴더는 레포지토리를 클론한 후에 나타납니다. 본문

카테고리 없음

빈 Git 서브모듈 폴더는 레포지토리를 클론한 후에 나타납니다.

스택큐힙리스트 2023. 11. 21. 00:04
반응형

저는 https://github.com/aikiframework/json에 호스팅된 하나의 저장소를 가지고 있습니다. 로컬 복사본에서 아래의 명령어를 사용하여 하위 모듈을 추가했습니다:


git submodule add [email protected]:jcubic/json-rpc.git json-rpc

그런 다음 커밋과 푸시를 수행하였고 변경 내용이 GitHub에 나타납니다(클릭할 수 있습니다). 그러나 저장소를 클론할 때:


git clone https://github.com/aikiframework/json.git

하위 모듈 폴더 json-rpc가 비어있습니다.


여기서 무엇이 잘못되었을까요? 무언가를 놓친 건가요? 왜 해당 폴더가 비어있나요?

답변 1

알았어, 리포지토리를 클론할 때 --recursive를 추가해야 하는 걸 찾았어.


그래서 클론 명령어는 다음과 같아:


git clone https://github.com/aikiframework/json.git --recursive

--recursive 플래그를 잊었다면 다음을 해도 돼 (감사함을 표하기 위해 @Amber에게):


git submodule update --init

서브모듈 안에 다른 서브모듈이 있는 경우, 재귀 옵션이 필요해 (감사함을 표하기 위해 @cpprust에게):


git submodule update --init --recursive

답변 2

리포지토리 클론 시 Git 서브모듈 폴더가 완전히 비어있는 상황입니다.
Git 서브모듈은 별도의 저장소로 구성된 하위 프로젝트를 부모 프로젝트에 포함시키기 위한 기능입니다. 그러나 때때로 리포지토리를 클론하는 과정에서 서브모듈 폴더가 완전히 비어있는 상황이 발생할 수 있습니다.
이러한 문제가 발생하는 이유는 다양합니다. 첫째로, 서브모듈의 URL에 오류가 있을 수 있습니다. URL이 잘못 입력되었거나 변경되었을 경우, 서브모듈을 정상적으로 가져올 수 없으며 폴더는 비어있게 됩니다. 따라서 URL을 확인하고 올바른 주소인지 확인해야 합니다.
둘째로, 리포지토리를 클론할 때 `--recursive` 옵션을 사용하지 않았을 경우에도 이 문제가 발생할 수 있습니다. 서브모듈을 클론하는 동안 이 옵션을 사용하지 않으면, 서브모듈의 내용이 함께 클론되지 않을 수 있습니다. 이 경우에는 후속으로 서브모듈을 별도로 초기화하고 업데이트해야 합니다.
또한, 서브모듈의 브랜치가 올바르게 설정되어 있지 않을 경우에도 폴더가 비어있을 수 있습니다. 부모 리포지토리와 서브모듈이 같은 브랜치를 사용하도록 확인해야 합니다. 서브모듈의 브랜치를 체크아웃하지 않아도 자동으로 해당 브랜치의 내용을 가져오지 않는다는 점을 이해해야 합니다.
이러한 문제를 해결하기 위해서는 몇 가지 단계를 거쳐야 합니다. 먼저, 서브모듈의 URL을 확인하고 올바르게 입력되었는지 확인해야 합니다. 그리고 리포지토리를 클론할 때 `--recursive` 옵션을 추가하여 서브모듈도 함께 클론될 수 있도록 해야 합니다. 마지막으로, 부모 리포지토리와 서브모듈의 브랜치가 동일한지 확인하고 필요한 경우 브랜치를 변경해야 합니다.
리포지토리를 클론하고 서브모듈을 초기화해야만 폴더가 비어있지 않고 올바른 내용이 포함될 수 있습니다. 따라서 리포지토리를 클론하는 과정에서 이러한 문제를 방지하기 위해 위의 단계를 따르는 것이 중요합니다.
요약하자면, 리포지토리를 클론할 때 Git 서브모듈 폴더가 완전히 비어있는 상황이 발생하는 이유는 URL 오류, `--recursive` 옵션 누락, 및 브랜치 설정 오류 등이 있을 수 있습니다. 이러한 문제를 방지하고 해결하기 위해서는 올바른 URL을 입력하고 `--recursive` 옵션을 사용하며, 브랜치를 올바르게 설정해야 합니다.

반응형
Comments