[Git] 원격 저장소의 특정 디렉토리만 clone(하위 디렉토리 clone)
DEVELOPMENT TOOLS/Git

[Git] 원격 저장소의 특정 디렉토리만 clone(하위 디렉토리 clone)

반응형

들어가기 전에

Docker를 통한 Oracle Database를 설치하기에 앞서, 특정 디렉토리만 clone하기 위한 방법을 소개하고자 합니다. Oracle Database 18c XE 설치 시 clone하는 과정을 통해 예시를 보여드리도록 하겠습니다.

원격 저장소의 하위 디렉토리만 clone하기

기본 git clone

기본적으로, git clone하는 방법은 아래와 같습니다.

  1. terminal을 통해 로컬에 저장하고자 하는 위치로 이동합니다
    • cd [ 저장하고자 하는 위치 ]
  2. git clone [ repository URL ] 명령어를 통해 클론합니다.

이때, repository URL은 아래 사진과 같이, repository 상단에 Code 항목을 클릭하면 HTTPS용 repository URL을 복사할 수 있어 해당 항목을 넣으면 레포지토리가 모두 복사됩니다.

원격 저장소 repository URL 찾는 법

하지만, 이렇게 clone하게 되면 필요하지 않는 항목들까지 모조리 로컬 저장소에 데려오게 됩니다. 이를 방지하기 위해 아래와 같이 특정 디렉토리만 clone을 해볼 수 있습니다.

특정 디렉토리만 git clone

  1. 먼저, 로컬 저장소의 git 저장소를 초기화하여 잘못 들어가있을 수 있는 저장소를 초기화해줍니다.
    • git init
  2. 그 후, sparse checkout이 가능하도록 아래와 같이 config를 수정합니다.
    • git config core.sparseCheckout true
  3. 앞서, 기본적인 clone에서와 같이 얻은 repository URL을 입력하여 remote를 추가합니다.
    • git remote add -f origin [ repository URL ]
  4. checkout 하고자 하는 파일이나 폴더를 .git/info/sparse-checkout 파일에 작성합니다(폴더일 경우 자동으로 하위 폴더가 포함됩니다).
    • echo "[ 복사하고자 하는 파일 경로 또는 폴더 경로 ]" >> .git/info/sparse-checkout
      
      '''
      [ 예시 ]
      docker-images라는 저장소의 docker-images/OracleDatabase/SingleInstance/dockerfiles/18.4.0 
      폴더 내 항목을 모두 복사하고자 하는 경우 아래와 같이 진행합니다.
      
      echo "OracleDatabase/SingleInstance/dockerfiles/18.4.0" >> .git/info/sparse-checkout
      '''
  5. 아래와 같이 git pull을 통해 원격 저장소에서 파일을 가져오면 sparse-checkout에 작성된 경로의 파일만 가져오게 됩니다.
    • git pull origin master
      또는
      git pull origin main
      
      '''
      최근 들어 git의 저장소는 master가 아닌 main 브랜치를 사용하는 경우가 많습니다.
      따라서, 원격 저장소의 브랜치가 어떻게 되어 있는지 확인한 후 해당 브랜치에 맞게 넣도록 합니다.
      '''

 

특정 디렉토리만 git clone 예시

특정 디렉토리 git clone 예시

반응형