[git] 힘내 하위 모듈 추가 : “git 디렉토리가 로컬에서 발견되었습니다”문제

실제로 git submodule하위 명령을 포함하여 git 사용 방법을 배우려고합니다 . SSH를 사용하여 git 저장소를 호스팅, 푸시 및 풀 할 수있는 서버를 이미 설정했습니다. 이 서버에서 모든 프로젝트를 하위 모듈로 저장하려는 기본 git 저장소 “Travail”을 만들었습니다.

내 Travail 저장소에서 이미 하위 프로젝트로 내 프로젝트를 추가했습니다 tools/libft.이 하위 모듈을 개발하여 푸시 및 풀 수 있습니다.

그러나 다른 하위 모듈 (서버의 fdf.git에서 fdf라는 이름)을 추가하려고하면 다음과 같은 문제가 발생합니다.

git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf

‘projets / fdf’의 git 디렉토리는 remote (s)를 사용하여 로컬에서 찾을 수 있습니다. origin ssh : //git@XXX.XXX.XXX.XXX : XXXXX / opt / git / fdf.git이 로컬 git을 재사용하려면 ssh : //XXX.XXX.XXX.XXX : XXXXX / opt / git / fdf.git에서 다시 복제하는 대신 ‘–force’옵션을 사용하십시오. 로컬 git 디렉토리가 올바른 저장소가 아니거나 이것이 ‘–name’옵션으로 다른 이름을 선택한다는 의미가 확실하지 않은 경우.

실제로 하위 디렉토리가 없습니다 projets/

git submodule sync하위 모듈의 원본 리포지토리에 대한 URL이 변경되었을 수있는 .gitmodules 파일을 사용 하거나 편집 해야하는 다른 스레드를 읽었 습니다.

그러나 내 .gitmodules 파일에는 projets / fdf가 아닌 내 첫 번째 하위 모듈 (tools / libft)에 대한 정보 만 포함되어 있습니다.

[submodule "tools/libft"]
    path = tools/libft
    url = ssh://git@XXX.XXX.XXX.XXX:XXXXX/opt/git/libft.git

프랑스 학생으로서 나는 가지고있는 영어 문서에서 무언가를 놓칠 수 있었지만 검색했는데 왜이 문제가 발생하는지 이해할 수 없습니다.

해결책을 얻을 수 있다면 기쁠 것입니다.하지만 설명 만 있으면 도움이 될 것입니다.



답변

최근에 삭제 한 서브 모듈과 동일한 경로로 서브 모듈을 추가하려고하는이 SO 게시물에 왔습니다.

이것이 궁극적으로 나를 위해 일한 것입니다 ( 이 기사는 많은 도움이되었습니다 ).

아직 실행 git rm --cached path_to_submodule하지 않았 rm -rf path_to_submodule거나 (후행 슬래시 없음) 그렇게하면됩니다!

그때:

  1. .gitmodules파일 에서 관련 줄을 삭제 하십시오. 예를 들어 다음을 삭제하십시오.

    [submodule "path_to_submodule"]
    path = path_to_submodule
    url = https://github.com/path_to_submodule

  2. .git / config에서 관련 섹션을 삭제하십시오. 예를 들어 다음을 삭제하십시오.

    [submodule "path_to_submodule"]
    url = https://github.com/path_to_submodule

  3. rm -rf .git/modules/path_to_submodule

그런 다음 마침내 다음을 수행 할 수 있습니다.

git submodule add https://github.com/path_to_submodule


답변

나는 jbmilgrom의 솔루션을 시도했다. 특히 나는 시도 git rm --cache했다. 디렉토리 / 서브 모듈이 없었기 때문에 나에게는 효과가 없었다. 나를 위해 일한 것은 다음과 같습니다.

  1. rm -rf .git/modules/blah
  2. git submodule add git://path.to.new

나는 명령과 다른 모든 디렉토리 --force내에서 시도한 후에 이것을 마스터 등으로 푸시했습니다 … 디렉토리가 존재하지 않았으며 캐시에 대한 이유가 없었습니다. 이 오류가 있었던 곳 에서 밝혀 졌습니다 .git submodulerm.git/modules


답변

'projets/fdf'디스크에서 디스크를 삭제했을 수 있지만 Git 리포지토리에는 여전히 디스크가 있습니다. git rm -rf projets/fdf힘내에서 그것을 제거하고 변경 사항을 커밋하는 데 사용하십시오 . 그런 다음이 폴더를 하위 모듈로 추가 할 수 있습니다.


답변

하위 모듈 디렉토리를 이미 삭제 한 경우 나머지 jbmilgrom의 지시 사항을 따르십시오. 핵심은 rm -rf .git/modules/path_to_submodule그러나 먼저 전체 부모 repo 디렉토리를 백업하십시오 .

하나의 하위 모듈 만 있다면 삭제하십시오. .gitmodules


답변

이 두 명령은 저에게 효과적입니다.

rm path/to/submodule -rf
rm .git/modules/path/to/module -rf


답변