2012-04-18 6 views
0

이것은 이전에 요청되었을 수도 있지만, 서브 모듈이 많은 문제를 유발할 수 있기 때문에 알기가 어렵습니다. 여기 내가하는 일이있다. 나는이 작업을 수행 할 때은 git submodules 내부에서 변경됩니다.

# cd to parent repo 
git submodule add git://example.com/myrepo 
cd myrepo 
# make some changes 
git commit -am "made changes" 
cd .. 
git commit -am "modified submodule" 
git clone --recursive . <path to cloned repo> 

나는 오류가

치명적인 얻을 :에 '96fa64c0dd64684f86d17841f7c515446885eb33을'체크 아웃 할

수 없습니다 다음 96fa64c0dd64684f86d17841f7c515446885eb33

: 참조가없는 나무입니다 서브 모듈 경로 'myrepo'

여기서 내가 뭘 잘못하고 있니? 하위 모듈을 추가 한 다음 몇 가지 사항을 변경 한 다음 하위 소스를 포함하여 전체 상위 소스 트리를 새 저장소로 복제하려고합니다.

답변

0

당신은 당신이 서브 모듈을 추가 한 후

git submodule init 

를 호출해야합니다. git submodule add은 저장소를 복제하고 .git 모듈에 항목을 추가합니다. git submodule init는 .gitmodules의 항목이 .git 할 수있는 서브 모듈 복사/설정

편집

난 당신이 서브 모듈을 사용하여 몇 가지 중요한 단계를 놓친 것으로 의심을 초기화합니다. 하위 모듈을 다루는 데 사용하는 단계는 다음과 같습니다.

먼저 복제 부모의 repo 복제 된 디렉토리에 적용

git clone [email protected]:test/test.git 

변화와 중첩 사람

git submodule update --init --recursive 
을 포함한 모든 서브 모듈을 당신의 서브 모듈

#change to the parent repo directory 
cd test 

#add the submodule to test/submodules/mysubmodule 
git add submodule [email protected]/test/mysubmodule.git submodules/mysubmodule 

초기화 모든 서브 모듈을 추가하고 업데이트 할 경우

변경 사항을 모두 추가하고 적용 가능한 경우 리모트로 밀어 넣기

git add . 
git commit 

이 마지막 부분은 변경 사항을 커밋하기 전까지 repo가 ​​실제로 하위 모듈에 대해 알지 못하기 때문에 매우 중요합니다.

+0

마침내 문제가 해결되었습니다. git clone을 사용하여 별도의 소스 트리로 먼저 서브 모듈로 필요한 저장소를 복제했습니다. 그런 다음 필요한 변경을했습니다. 그럼 내가 원하는 repo의 로컬 복사본에 경로에 자식 하위 모듈을 추가 사용됩니다. –

+0

왜 그렇게했는지 확신 할 수 없습니다. 서브 모듈을 매일 사용합니다. 심지어 서브 모듈 내의 서브 모듈까지도 사용할 수 있습니다. 그 중 하나를 별도로 복제하지 않아도됩니다. 나는 당신을 위해 작동해야하는 서브 모듈을 사용하는 단계로 나의 대답을 편집하려고합니다. –

관련 문제