programing

Git 하위 모듈 추가: "git 디렉토리가 로컬로 검색됨" 문제

muds 2023. 5. 26. 22:50
반응형

Git 하위 모듈 추가: "git 디렉토리가 로컬로 검색됨" 문제

저는 사실 깃을 사용하는 법을 배우려고 노력하고 있습니다.git submodule하위 명령SSH를 사용하여 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.XXX.XXX.XXX에서 다시 복제하는 대신 이 로컬 git 디렉토리를 다시 사용하려면 '--force' 옵션을 사용합니다.로컬 Git 디렉토리가 올바른 보고서가 아니거나 이것이 무엇을 의미하는지 잘 모를 경우 '--name' 옵션이 있는 다른 이름을 선택합니다.

에 실제로 하위 디렉터리가 없습니다.projets/

나는 다른 스레드에서 내가 사용해야 할 것을 읽었습니다.git submodule sync또는 .gitmodules 파일을 편집하여 하위 모듈의 원본 저장소에 대한 URL을 변경할 수 있습니다.

그러나 내 .gitmodules 파일에는 projets/fdf:에 대한 정보가 아니라 내 첫 번째 하위 모듈(도구/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
  1. .git/config에서 관련 섹션을 삭제합니다. 예를 들어 다음 섹션을 삭제합니다.
[submodule "path_to_submodule"]
        url = https://github.com/path_to_submodule
  1. 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 submodule 및 명및rm다른 모든 디렉토리, 마스터로의 푸시 등...디렉터리가 존재하지 않으며 캐시에 대한 이유가 없습니다.에서 됩니다..git/modules그것이 이 오류가 있었던 곳입니다.

만약 당신이 나처럼 서브모듈 디렉토리를 이미 삭제했다면, jbmilgrom의 나머지 지침을 따르십시오.는 심은입니다.rm -rf .git/modules/path_to_submodule먼저 전체 상위 repo 디렉터리를 백업하십시오.

만 하면 ..gitmodules

은 당신의 다니있습수를 했을 수 있습니다.'projets/fdf'Git 저장소에 저장되어 있습니다.사용하다git rm -rf projets/fdfGit에서 제거한 다음 변경 사항을 커밋합니다.그런 다음 이 폴더를 하위 모듈로 추가할 수 있습니다.

이 두 가지 명령은 저에게 적합합니다.

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

하위 모듈을 복제하는 동안 이 작업을 수행할 수 있습니다.

git 하위 모듈 추가 --name 하위 모듈_name 하위 모듈 경로

이렇게 하면 프로젝트에 하위 모듈이 추가되고 다음과 같은 구조로 추가됩니다..gitmodulesjava.

그런 다음 오래된 것을 원하지 않으면 제거할 수 있습니다..gitmodules프로젝트에서 하위 모듈 폴더를 구성하고 삭제합니다.

같은 문제가 있었고, 이것이 저에게 효과가 있었습니다.

# force register the submodule in .gitmodules
git submodule add -f <name> <path>

# force git to update cached submodule configs
git submodule sync --recursive

문서에서:

동기화 [--sync] [--] [...]

하위 모듈의 원격 URL 구성 설정을 .git 모듈에 지정된 값으로 동기화합니다.이미 .git/config에 URL 항목이 있는 하위 모듈에만 영향을 줍니다(초기화되거나 새로 추가된 경우).이 기능은 하위 모듈 URL이 업스트림으로 변경되고 그에 따라 로컬 리포지토리를 업데이트해야 하는 경우에 유용합니다.

문제는, 당신의 말에도 불구하고..gitmodules, 구성 " " ", " ".git/modules/tools/libftURL을 있습니다. 이 모듈은 URL입니다.

은 용자를솔션루른입니다.rm -rf .git/modules/<repo>는 단지 " 구을삭는중다니입하" 하는 것입니다.git submodule sync업데이트합니다.

저는 빈 서브모듈(파일, 분기 없음)을 추가하고 다른 답변에 있는 명령어를 사용하여 삭제했습니다.

하지만 파일이 삭제된 동안 로컬 git 디렉토리가 남아 있어서, 저는 다음으로 가야만 했습니다..git한 후 합니다..git/modules/SUBMODULE-PATH마침내 이 오류를 해결하고 얻은.git submodule add일하기 위해.

.git폴더가 숨겨졌습니다.Windows에서 파일 탐색기의 보기에서 "숨겨진 항목"을 사용하도록 설정한 다음 루트 폴더에서 액세스할 수 있습니다.

언급URL : https://stackoverflow.com/questions/20929336/git-submodule-add-a-git-directory-is-found-locally-issue

반응형