prosource

Windows git: "오류: 희소 체크아웃으로 작업 디렉토리에 항목이 남지 않음"

probook 2023. 10. 10. 20:38
반응형

Windows git: "오류: 희소 체크아웃으로 작업 디렉토리에 항목이 남지 않음"

오류가 있었습니다.

“error: Sparse checkout leaves no entry on the working directory”

창에 계산대를 설치하려고 할 때 말입니다.저는 그 문제를 조사하고 인터넷에 퍼져있는 완전한 답을 찾은 후에 제 자신의 질문에 답했습니다.

tl;dr

소스를 사용할 폴더에서 git-bash 프롬프트 NOT 파워셸을 사용합니다(아래 내 편집 참조).

git clone –n <repo> <local-directory-name>
cd <local-directory-name>
git config core.sparsecheckout true
echo some/sub-folder/you/want >> .git/info/sparse-checkout
git checkout <branch-name>

전체설명

희소 체크아웃을 사용하면 저장소의 하위 집합에서 작업할 수 있습니다.대규모 저장소에 희박한 계산대를 설치하는 것은 노력할 가치가 있습니다. 모든 것이 훨씬 더 빠릅니다!

"오류: 희소 체크아웃이 작업 디렉토리에 항목을 남기지 않음"이라는 오류가 많이 발생하여 윈도우에 설정하는 데 어려움을 겪었습니다.약간의 연구 끝에, 저는 다음 단계들이 최소한이며 지속적으로 저에게 좋은 결과를 가져다 주었다는 것을 알게 되었습니다. 바로 YMMV입니다.

가장 중요한 점은 이 단계에서 파워셸/CMD를 사용하지 마십시오. 깃배시 프롬프트를 사용하십시오.그렇지 않으면 echo 명령이 BOM 마커가 있는 유니코드 파일을 생성하기 때문입니다.git가 올바르게 구문 분석하려면 파일이 UNIX 스타일의 줄 끝이 있는 ANSI 형식의 파일이어야 합니다.이는 "error: sparse coeckout이 working directory에 항목을 남기지 않음" 오류의 가장 큰 원인입니다.

  1. 루트 폴더로 사용할 디렉토리의 상위에서 폴더 이름이 "src"라고 가정하면 다음 작업을 수행합니다. 이 작업은 전체 레포(이 작업은 여전히 필요함)를 잡지만 체크아웃을 수행하지 않으며 오리진 원격 및 분기 추적을 올바르게 설정합니다.

    git clone –n <your repository> src
    
  2. 상당히 비어있는 src 폴더가 있어야 합니다(.git 숨겨진 폴더가 있음).이제 다음을 실행합니다.이렇게 하면 로컬 git 구성이 업데이트되어 스파스 체크아웃이 켜지고 스파스 체크아웃 시 포함할 모든 폴더가 나열되는 .git/info 숨김 폴더에 파일이 생성됩니다.나중에 편집하여 다른 폴더를 추가할 수 있습니다.중요:아래의 git bash 프롬프트를 사용하고, sparse-checkout 파일을 편집할 때 unix 줄 끝 표기법을 지원하는 편집기를 사용하고 ANSI로 저장해야 합니다. 그렇지 않으면 "error: sparse ceckout이 working directory에 항목을 남기지 않음" 오류가 발생할 수 있습니다.<path you want to checkout>다음과 같이 보일 수 있습니다.path/to/subfolder 및 -합니다.

    cd src
    git config core.sparsecheckout true
    echo <path you want to checkout> >> .git/info/sparse-checkout
    
  3. 이제 체크아웃할 준비가 되었습니다.이렇게 하면 희소 체크아웃 폴더만 채워집니다.만약 그렇지 않다면, 위의 모든 것의 철자를 주의 깊게 확인하세요!

    git checkout <branch-name>
    

편집 - 파워셸의 에코

저는 최근에 파워셸의 에코가 쓰기-출력의 동의어라는 것을 발견했습니다.여 수 .out-file인코딩을 지정할 수 있는 명령입니다.따라서 파워셸에서 작동하며 올바른 파일 내용을 제공합니다.

echo some/sub/folder/you/want | out-file -encoding ascii .git/info/sparse-checkout

표시된 답변은 맞지만 Windows에서 "git bash"를 사용할 필요는 없습니다.PowerShell에서도 동일한 작업을 쉽게 수행할 수 있습니다.

Set-Content .git\info\sparse-checkout "some/sub-folder/you/want/*" -Encoding Ascii

이렇게 하면 ANSI 인코딩(분명히)으로 파일이 생성되지만 CRLF(Windows) 줄 끝이 있습니다.그래도 문제가 없어 보였는데, 잘 작동하고 체크아웃도 잘 안 했어요.

Windows Server 2012에서 테스트했습니다.

언급URL : https://stackoverflow.com/questions/23289006/on-windows-git-error-sparse-checkout-leaves-no-entry-on-the-working-directory

반응형