2016-07-31 3 views
6

두 개의 하위 모듈이있는 저장소가 있습니다.이전 서브 모듈 경로에 걸려있는 Git 인덱스?

fatal: no submodule mapping found in .gitmodules for path 'AppName.xcodeproj/..Vendor/AFNetworking'

내 서브 모듈이 동일한 디렉토리에있는 모든하지 않았다, 나는 프로젝트를 정리하기로 결정했다 : 나는 git submodule init 또는 git submodule update을 실행할 때 힘내 다음과 같은 오류와 함께, 불평. 일부 서브 모듈을 포함하고있는 Vendor이라는 디렉토리를 사용했지만, 서브넷을 git에서 제거하려면 here 지시를 따랐습니다. 그런 다음 서브 모듈을 submodules이라는 새 디렉토리에 다시 추가했습니다.

내 하위 모듈 중 하나는 초기 공급 업체 디렉토리에 하위 모듈로 추가 한 AFNetworking 라이브러리입니다. 나는 그것을 얼마 전에 제거하고 청소 과정의 일부로 다시 추가했습니다. 응용 프로그램은 잘 작성된 것 같았고 내 git submodule 명령이 제대로 작동했습니다. 이제 다른 컴퓨터에서 체크 아웃 할 때 위에서 설명한대로 실패합니다. 내 모듈이있는 곳 자식이 알고있는대로 이것은 정상적인 것

[submodule "submodules/AFNetworking"] 
    path = submodules/AFNetworking 
    url = https://github.com/AFNetworking/AFNetworking.git 
[submodule "submodules/LNPopupController"] 
    path = submodules/LNPopupController 
    url = https://github.com/MosheBerman/LNPopupController.git 

, 모두 잘해야한다 :

.gitmodules 파일은 다음과 같습니다. 같은 내 .git/config 파일의 사실이다 :

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
    precomposeunicode = true 
[remote "origin"] 
    url = [email protected]:MosheBerman/theshmuz.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
[submodule "submodules/AFNetworking"] 
    url = https://github.com/AFNetworking/AFNetworking.git 

오류는 미묘한, 그리고 내가 그것을 실현하기 위해 잠시했다,하지만 오류 메시지가 더 이상 이전Vendor 디렉토리를 참조하는 것으로 나타났습니다 존재합니다.

고양이의 출력을 텍스트 파일로 보내고 텍스트 편집기를 사용하여 ./git/index을 열었습니다. 물론 AppName.xcodeproj/../Vendor/AFNetworking/이 색인에 나타납니다. 이게 나쁜 gitlink일까요? 정상적으로 내 repo를 초기화하고 빌드 할 수 있도록 정리하는 방법은 무엇입니까?

답변

1

내가 같은 전에 AppName.xcodeproj를 포함하는 루트 디렉토리에서 인덱스에서 캐시 된 참조 제거 시도했다 : 그래서

git rm --cached /Vendor/AFNetworking

을, 나는 폴더 계층 구조를 재현하고 나는 또한 /Vendor/AFNetworking. 내부 더미 파일을 추가하는 시도 Vendor 안에 "AFNetworking"이라는 파일을 추가하려고 시도했습니다. 그 파일들을 추가하고 제거하는 것은 그 속임수를하지 않았습니다.

이 문제를 다시 살펴본 결과 a blog post (link)이 색인을 검사하는 올바른 방법을 설명했습니다.

AppName.xcodeproj/../Vendor/AFNetworking.

이 솔루션은과 같이, 인덱스에서 정확한 목록을 사용하여 파일을 제거하는 것이었다 :

git rm --cached AppName.xcodeproj/../Vendor/AFNetworking

그것은 내 인덱스가에서 이전 서브 모듈에 이상한 기준을 한 것으로 밝혀 그런 다음 git submodule update을 성공적으로 실행할 수있었습니다. 인덱스가 유닉스 파일 시스템의 상대 경로와 항상 일치하지는 않는 것처럼 보이지만 경우에 따라 더 구체적 일 수 있습니다. Pro Git에는 인쇄물 9 장 (Chapter 10 online)에 대한 정보가 있었지만이를 의심스럽게 생각했지만 색인을 열 수있는 방법을 정확히 이해하기 위해서는 블로그 게시물이 필요했습니다.

관련 문제