git 프로젝트의 하위 디렉토리를 복제하는 방법(zip이 아님)

4144 단어 gitbashgitlabgithub
github, gitlab 또는 bitbucket의 git 저장소에서 폴더를 가져오려고 시도한 적이 있습니까?



홉 홉 홉, DownGit처럼 ZIP 폴더 다운로드에 대해 말하는 것이 아니라 git clone... 명령을 사용하여 하위 디렉토리만 복제하는 것입니다!

나는 친구로부터 그 질문을 받았고, 그렇게 하기 위해 작고 흥미로운 bash 스크립트를 작성했습니다!

우리는 그것을 2단계로 할 것입니다.

BASH 스크립트 기능 작성


.bashrc에 다음과 같이 sparse-checkout을 업데이트하는 함수를 작성할 것입니다.

_git_clone_sub ()
{
    REPO_NAME="$(echo $2 | grep -oE '[^/]+$')";
    git clone --filter=blob:none --no-checkout $2
    cd $REPO_NAME;
    git sparse-checkout set --no-cone "$1/*"
    if [ -n "$3" ]; then
        git pull origin $3;
        git checkout $3;
    else
        git fetch origin;
        git checkout main
        [[ $? != 0 ]] && git checkout master;
    fi
}


이 스크립트는 매우 간단합니다. 다음과 같은 작업을 수행합니다.
  • 링크(github.com/author/repo-name)에서 저장소 이름을 추출합니다.
  • 리포지토리 이름으로 git 프로젝트를 만들고 링크에서 원본을 추가합니다.
  • 그런 다음 프로젝트의 트리 구성을 업데이트합니다.
  • 선택적 매개변수로 분기가 있습니다. 제공되는 경우 스크립트는 해당 분기에서 하위 디렉토리를 복제하고, 그렇지 않으면 마스터에서 복제합니다(원하는 경우 main로 변경할 수 있음).

  • 이제 다음과 같은 하위 디렉토리를 쉽게 복제할 수 있습니다( a source ~/.bashrc 이후).

    _git_clone_sub subDir1 https://github.com/auth/repo
    


    또는 지점 이름을 지정하여:

    _git_clone_sub subDir1 https://github.com/auth/repo dev-branch
    


    GIT 별칭 작성



    지금까지는 좋았지만... 더 잘할 수 있습니다!
    다음과 같이 ~/.gitconfig 파일에 별칭을 추가하여 git에서 직접 bash 함수를 호출할 수 있습니다.

    [alias]
        clone-sub = !bash -i -c '_git_clone_sub "$@"' -s
    


    그래 그래 잠깐만, 나도 알아, 이상해 보이지만 설명할게... 실제로는 간단해!

    먼저 bash 기능을 실행할 것이므로 'bash -c'로 이를 수용합니다. 그런 다음 함수를 호출합니다.$@는 별칭 끝에 있는 -s 플래그를 사용하여 얻은 모든 인수를 가져오는 것입니다.

    즉, 이제 다음을 수행할 수 있습니다.

    git clone-sub subDir1 https://github.com/auth/repo
    



    git clone-sub subDir1 https://github.com/auth/repo dev-branch
    


    데모





    읽어 주셔서 감사합니다. 좋아요 및/또는 구독을 통해 더 많은 내용을 확인하세요 🐼.

    좋은 웹페이지 즐겨찾기