비슷한 문제가 있었지만 GUI 도구를 사용하여 코너에 섰습니다.
파일이 몇 개있는 하위 프로젝트가 있었으므로 지금까지 자체 git repo를 확인하는 대신 복사했습니다. 하위 폴더에 리포지토리를 만들고 커밋, 푸시 등을 할 수있었습니다. 그러나 부모 저장소에서 하위 폴더는 하위 모듈로 취급되지 않았으며 파일은 여전히 부모 저장소에 의해 추적되고 있습니다.
이 혼란을 피하기 위해 Git에게 하위 폴더 추적을 중단하도록 지시 해야했습니다 (파일을 삭제하지 않고).
proj> git rm -r --cached ./ui/jslib
그런 다음 거기에 하위 모듈이 있다고 말해야했습니다 (현재 git에서 추적중인 것이 있으면 할 수 없습니다).
proj> git submodule add ./ui/jslib
최신 정보
이를 처리하는 이상적인 방법은 몇 가지 단계를 더 포함합니다. 이상적으로 기존 리포지는 부모 git 모듈이없는 자체 디렉토리로 이동하여 커밋 및 푸시 한 다음 다음과 같은 하위 모듈로 추가됩니다.
proj> git submodule add git@bitbucket.org:user/jslib.git ui/jslib
그것은 표준 복제 단계를 포함하는 하위 모듈로 git repo를 복제 할뿐만 아니라 하위 모듈을 작동시키기 위해 git이 대신하기 위해 더 모호한 구성 단계를 수행합니다. 가장 중요한 차이점은 실제 git dir이 어디에 있는지에 대한 경로 참조를 포함하는 .git 디렉토리 대신 간단한 .git 파일을 거기에 배치한다는 것입니다. 일반적으로 상위 프로젝트 루트 .git / modules / jslib.
당신이 이런 식으로 일을하지 않으면 그들은 당신을 위해 잘 작동하지만, 당신이 부모를 저지르고 밀고 나자마자 다른 개발자가 그 부모를 잡아 당길 때, 당신은 그들의 삶을 훨씬 더 힘들게 만들었습니다. 자체 .git dir을 포함하는 dir의 하위 폴더에 전체 .git dir이 있으면 시스템에있는 구조를 복제하기가 매우 어렵습니다.
따라서 git add submodule은 이동, 푸시, 가장 깨끗한 옵션입니다.