[git] .gitmodule에서 하위 모듈이 아닌 경로에 대한 하위 모듈 매핑이 없습니다.

서브 모듈이있는 프로젝트가 있습니다. lib/three20

.gitmodule파일은 다음과 같습니다

[submodule "lib/three20"]
    path = lib/three20
    url = git://github.com/facebook/three20.git

나는 (오류없이 과거에이를 복제 한 git submodule init다음 git submodule update) 그리고 잠시 동안 일하고 있어요.

이것을 새로운 컴퓨터에 복제하려고 시도했지만 이제이 오류가 발생합니다 git submodule init.

No submodule mapping found in .gitmodules for path 'Classes/Support/Three20'

그 경로는 다른 디렉토리에서 프로젝트를 저장하는 데 사용하는 Xcode의 빈 폴더입니다. 파일의 일부 .gitmodules가 아니므 로이 경로를 어디에서 가져 오는지 알 수 없습니다.

어떤 아이디어?



답변

다음 rajibchowdhury대답 (upvoted)를 사용git rm 좋습니다 명령은 제거하기위한 특별 항목 서브 모듈을 나타내는 지수 (특수 모드와 폴더 ‘A’를 160000).

해당 특수 항목 경로.gitmodule( Classes/Support/Three20원래 질문의 ‘ ‘ 와 같이) 참조되지 않으면 ” 경로 에 하위 모듈 매핑이 없습니다.gitmodules “오류 메시지가 표시 되지 않도록 해당 경로 를 제거해야 합니다.

서브 모듈을 참조하는 색인의 모든 항목을 확인할 수 있습니다.

git ls-files --stage | grep 160000

이전 답변 (2010 년 11 월)

(에 설명 된대로, 마지막에 ‘/’, 즉 어떤 꼬리없이 제대로 초기 서브 모듈을 선언하지 않은 가능성이 예전 대답 당신은 비록 .gitmodule그것에서 확인 보이는 경로가).

이 스레드 는 다음을 언급합니다.

새로운 클론에서 ‘git submodule init’을 실행할 때 동일한 오류가 발생합니까?
그렇다면 잘못된 것이 있습니다.

하위 모듈이 없으면 .gitmodules.git / config의 하위 모듈에 대한 참조 및 삭제 를 수행하고 Pikimal 디렉토리에 디렉토리가 없는지 확인하십시오 .git.
그래도 문제가 해결되면 크루즈 작업 복사본에서 체크인하고 동일한 작업을 수행하십시오.

기본 .gitmodules파일을 삭제하지 말고 .gitmodules작업 트리에서 다른 추가 파일을 살펴보십시오 .


여전히 “부정확 한 서브 모듈 초기화”주제에서 Jefromi 는 실제로 gitlink 인 서브 모듈을 언급합니다.

추적되지 않은 콘텐츠를 추적하는 방법을 참조하십시오 . 그러한 디렉토리를 실제 서브 모듈로 변환하기 위해.


답변

경로 ‘OtherLibrary / MKStore’에 대한 .gitmodules에서 하위 모듈 매핑을 찾을 수 없습니다.

$ git submodule update --init

왜 오류가 발생했는지 몰랐습니다. 1 분을 보낸 후 stackoverflow에서 답을 찾았습니다.

$ git rm --cached OtherLibrary/MKStore

그런 다음 서브 모듈을 다시 업데이트하십시오. 잘 작동합니다.

http://en.saturngod.net/no-submodule-mapping-found-in-gitmodules


답변

SourceTree를 사용하여 작업을 수행하면이 메시지가 나옵니다.
내가 만난 메시지 :

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree submodule update --init --recursive
No submodule mapping found in .gitmodules for path 'SampleProject/SampleProject'
Completed with errors, see above

내 시나리오는 프로젝트 디렉토리에 .git 폴더 가 잘못 적용된 것 입니다.
SourceTree는이 폴더를 git 서브 모듈로 간주했지만 실제로는 그렇지 않습니다.

내 해결책은 명령 줄을 사용하여 제거하는 것입니다.

$ git rm -r SampleProject --cached
$ git commit -m "clean up folders"

git에서 쓰레기를 제거하고 깨끗하게 유지하십시오.


답변

나는이 문제를 해결했다. 처음에 나는 이것을 시도했다.

git submodule add --branch master [URL] [PATH_TO_SUBMODULE]

마스터 브랜치를 복제하려면 –branch 옵션의 스펙을 사용하지 않아야합니다 . 이 오류가 발생합니다.

fatal: Cannot force update the current branch.
Unable to checkout submodule '[PATH_TO_SUBMODULE]'

당신이 시도 할 때마다

git submodule sync

이 오류가 발생합니다.

No submodule mapping found in .gitmodules for path '[PATH_TO_SUBMODULE]'

그리고 .gitmodules에 필요한 줄은 추가되지 않습니다.

그래서 나를위한 해결책은 다음과 같습니다.

git submodule add [URL] [PATH_TO_SUBMODULE]


답변

내 repo의 새로운 체크 아웃시 “git submodule init”을 시도한 후에이 오류가 발생했습니다. 처음에 잘못된 경우로 모듈 하위 폴더를 지정했습니다. 대소 문자를 구분하는 파일 시스템 (hurr)이있는 Mac을 사용하고 있기 때문에 실패했습니다. 예를 들면 다음과 같습니다.

git submodule add git@github.com:user/project.git MyApp/Resources/Project
Cloning into 'MyApp/Resources/Project'

성공하지만 문제는 디스크에서 경로가

Myapp/Resources/Project

내가 이해하지 못하는 것은 git이 모듈을 잘못된 폴더에 초기화하고 (내 명령에서 잘못된 경우를 무시한 후) 후속 명령으로 올바르게 작동하지 않는 이유입니다.


답변

그냥 git rm subdir 확인 될 것입니다. 하위 디렉토리를 인덱스로 제거합니다.


답변

이 문제가 발생했습니다. 잠시 동안 경로 제거, git 경로 제거, .gitmodules 제거, .git / config에서 항목 제거, 하위 모듈 다시 추가, 변경 커밋 및 푸시에 대한 조언을 시도했습니다. “git commit -a”를 수행했을 때 아무런 변화가 없었기 때문에 수수께끼였습니다. 그래서 나는 제거를 밀고 나서 readdition을 밀어서 변화처럼 보이도록 시도했습니다.

잠시 후 모든 것을 제거한 후 “git submodule update –init”를 실행하면 git이 더 이상 참조하지 않아야하는 특정 이름에 대한 메시지가 표시됩니다. 경로 이름이 아닌 연결되었습니다. Grepping은이 참조가 .git / index에 있음을 공개했습니다. 그래서 “git rm –cached repo-name”을 실행 한 다음 모듈을 읽었습니다. 이번에 커밋했을 때 커밋 메시지에 예기치 않은 개체가 삭제되었다는 변경 내용이 포함되었습니다. 그 후에는 잘 작동합니다.

무슨 일이 있었는지 모르겠지만 누군가 누군가 git submodule 명령을 잘못 사용하여 인수를 되돌릴 수 있습니다. 나도 될 수 있었을 것입니다 … 이것이 누군가를 돕기를 바랍니다!