programing

Git: fatal: Pathspec이 하위 모듈에 있습니다.

jooyons 2023. 6. 29. 20:04
반응형

Git: fatal: Pathspec이 하위 모듈에 있습니다.

트래비스를 데려오려고 합니다 가이드에 따라 Hakyl 정적 사이트를 자동으로 배포하는 CI.

제 레포 설정 방법은 다음과 같습니다.저는 제 하킬과 마크다운 파일이 들어 있는 소스 브랜치를 가지고 있습니다.html을 에 빌드합니다._site하위 모듈로 설정된 디렉토리는 내게 연결되어 있습니다.master분점.

저는 문제없이 사이트를 구축합니다.cd_site 디렉토리로 이동합니다.하지만, 내가 하려고 할 때.git add ./*새로 생성된 HTML 파일에서 다음 오류가 발생합니다.

fatal: Pathspec './about.html' is in submodule '_site'

내가 노력할때git add --all다음 오류가 발생했습니다.

git: pathspec.c:317: prefix_pathspec: Assertion `item->nowildcard_len <= item->len && item->prefix <= item->len' failed.

/home/travis/build.sh: line 245: 1566 Aborted git add --all

무엇이 원인이며, 어떻게 하면 이것을 피할 수 있습니까?

여기에서 리포지토리를 볼 수 있습니다.

git에서 디렉터리를 제거하고 다시 추가하는 것이 나에게 효과가 있었습니다.

 git rm --cached directory
 git add directory

이것은 의도적으로 제거한 경우에 작동합니다..git당신이 추가하기를 원했기 때문입니다.directory당신의 메인 깃 프로젝트로.제 경우에는, 확장을 복제하고 실행했습니다.git add .별 생각 없이Git는 서브모듈을 만들기로 결정했지만, 저는 그것을 좋아하지 않았습니다.그래서 제가 제거했습니다.directory/.git우연히 마주쳤습니다.Git: fatal: Pathspec is in submodule서브모듈을 제거하는 방법을 찾을 수 없었습니다.위의 두 라인으로 고정됩니다.

나는 서브디렉토리가 git 서브모듈이 되는 것을 멈추기를 원했습니다.이것은 저에게 효과가 있었습니다.

$ mv subdir subdir2
$ git rm --cached subdir
$ mv subdir2 subdir

보아하니git addcontext는 경고를 트리거하는 상위 repo("parent"는 하위 모듈을 포함하는 repo를 의미합니다)입니다.

다음을 사용하여 컨텍스트를 변경해 보십시오.

cd _site
git --git-dir=.git --work-tree=. add . 
git --git-dir=.git --work-tree=. commit -m "new files"

이것이 효과가 있다면, 당신은 여전히 부모 레포로 돌아가야 할 것이라는 것을 잊지 마세요, 그리고.git add _site서브 레포에 변경 사항이 있을 것이기 때문입니다.

그리고 둘 다 눌러야 합니다.


2017년 1월 업데이트(2년 이상 경과)

Git 2.12를 사용하면 이를 확인할 수 없습니다.prefix_pathspec: Assertion더이상.

스테판 벨러()stefanbeller의 커밋 2d81c48(2017년 1월 9일)을 참조하십시오.
도움을 받은 사람: 제프 peff킹()과 주니오 C 하마노().gitster
(주니오 C 하마노에 의해 합병 -- -- 커밋 00880a1, 2017년 1월 18일)

pathspec서브모듈 관련 보다 나은 메시지 제공pathspec오류

실행 중"git add a/b"일 때"a는 하위 모듈에서 올바르게 오류가 발생했지만 의미 있는 오류 메시지는 표시되지 않습니다.

초기화되지 않은 하위 모듈에서 작동하는 것처럼 들립니다(기본적으로 누락됨)..git디렉터리)를 먼저 초기화하고 업데이트해야 합니다.

git submodule init
git submodule update

그렇지 않으면 이 하위 모듈이 더 이상 필요하지 않으면 다음 방법으로 제거합니다.

git submodule deinit _site

또는:

git rm -f --cached _site

다시 추가합니다.

git add _site

미결 상태인 하위 을 확인 방법은 다음과 같습니다.git submodule status.

참고 항목:gitadd.에서 'Assertion failed'로 git 오류가 발생하는 이유는 무엇입니까?

제 문제는 제가 실수로 삭제한 것 같습니다..git하위 모듈의 폴더입니다.

프로젝트 내에 두 개 이상의 하위 모듈 디렉터리가 있더라도 이 문제를 100% 해결할 수 있습니다.

> git submodule foreach --recursive deinit -f --all -- <relative path>
> git add --all -f

언급URL : https://stackoverflow.com/questions/24472596/git-fatal-pathspec-is-in-submodule

반응형