자식 스파스 체크아웃

6799 단어 gitdevjournal
어제 게시물이 있는 기능git sparse-checkout을 발견했습니다.




그의 기사는 훌륭했고 기능을 발견하는 데 도움이 되었습니다.

여기에서 내가 찾은 내용을 보관용으로 기록하고 싶습니다git sparse-checkout..

git sparse checkout이란 무엇입니까?



다음은 git 문서에서 설명하는 내용입니다.

Reduce your working tree to a subset of tracked files



그래서 이런 종류의 저장소가 있다면

README.md
CHANGELOG.md
src/
assests/
tests/
web/
tools

그리고 srctests 폴더만 가져오려면 이것을 사용하십시오.

src/
tests/

다른 폴더는 필요와 관련이 없기 때문입니다.

왜 이것이 필요할까요?



CI를 실행할 때 자산(이미지, css ...)이 필요하지 않아 거대한 저장소에서 속도를 높일 수 있습니다git clone.

그러나 커밋을 추가하고 정상적으로 작업할 수 있습니다. 단순히 다른 폴더의 정보를 가져오지 않았습니다.

흥미로운 읽기



먼저 매우 흥미로운 기사를 읽었습니다.





스파스 체크아웃으로 더 빠른 git 클론 | 아이메릭 보멧



우리 REKKI는 모든 것을 포함하는 모노 레포에서 작업하고 있습니다.
대부분의 서비스 및 작업에 대한 백엔드 Go 코드입니다. 시간이 흐르고 크기가 커지면
이 리포지토리의 증가, 초기에 걸리는 시간…



aymericbeaumet.com




편집: 작성자 자신의 dev에 대한 기사를 찾을 수도 있습니다.




물론 설명서https://www.git-scm.com/docs/git-sparse-checkout

사용 방법 ?



git clone 최소 가져오기로 시작




git clone --filter=blob:none --no-checkout <repository>


아무것도 없는 상태로 저장소를 구성할 수 있지만 아직은 중요합니다.
  • --filter=blob:none : BLOB 개체를 가져오지 않도록 지시합니다
  • --no-checkout : HEAD
  • 를 자동으로 체크아웃하지 않도록 지시합니다.

    따라서 여기에서 분기를 수행할 수 있으며git checkout 분기를 사용하지 않은 경우--no-checkout와 다를 바가 없습니다.

    대신 git sparse-checkout를 사용할 수 있습니다.

    스파스 체크아웃



    따라서 srctests 폴더만 필요하다는 점을 기억하십시오.

    이렇게 하세요:

    git sparse-checkout set src tests
    



    --stdin을 사용할 수 있는 팁
    당신은 또한 사용할 수 있습니다 --stdin
    echo -e "src\nassets" | git sparse-checkout set --stdin
    


    참고: 여기서는 echo가 예로 사용되며 --stdin를 사용하면 사용법을 스크립팅하고 있음을 의미합니다.



    참고: 필요에 따라 추가할 수도 있습니다.

    git sparse-checkout set src
    # ...
    # and later, even days later
    git sparse-checkout add tests
    # and here it would fetch the missing files
    


    참고: --stdin와 함께 git sparse-checkout add를 사용할 수도 있습니다.

    팁: git sparse-checkout list를 사용하여 추적 중인 항목을 확인하세요.
    언제든지 git sparse-checkout list를 사용하여 구성된 항목을 확인할 수 있습니다.

    git sparse-checkout list
    



    src
    tests
    





    git은 이것을 내부적으로 어떻게 따릅니까?
    .git/info/sparse-checkout 파일에서 구성된 항목을 찾을 수 있습니다.

      /*
      !/*/
      /src/
      /tests/
    


    참고: 스파스 체크아웃과 관련된 다른 파일이 있습니다. 설명서를 읽을 수 있습니다.

    경고: 해당 파일을 직접 가지고 노는 것보다 git sparse-checkout 명령을 사용하는 것이 좋습니다.



    그래서, 그럼?



    브랜치를 간단히 가져와서 체크아웃할 수 있습니다. 요청된 폴더나 파일만 표시됩니다.

    README.md
    CHANGELOG.md
    src/
    tests/
    whatever/
    foobar/
    



    git sparse-checkout set src tests
    


    그런 다음 main 분기를 확인하면 이것을 얻을 수 있습니다.

    git checkout main
    



    README.md
    CHANGELOG.md
    src/
    tests/
    


    참고: 기본적으로 저장소 루트에 있는 모든 파일(폴더가 아닌 파일만)은 항상 체크아웃됩니다. 설명서에서 그 이유를 확인할 수 있습니다.

    이를 원하지 않으면 스파스 체크아웃을 설정할 때 --no-cone 매개변수를 통해 레거시 기능을 사용해야 합니다.

    git sparse-checkout set --no-cone src tests
    


    체크 아웃하면 이것을 얻을 수 있습니다.

    src/
    tests/
    


    이 정보가 유용하기를 바랍니다.

    좋은 웹페이지 즐겨찾기