Skip to main content

하위 폴더를 새 리포지토리로 분할

Git 리포지토리 내의 폴더를 새 리포지토리로 전환할 수 있습니다.

Platform navigation

Note

다음 지침을 따르려면 Git 버전 2.22.0 이상이 필요하며 그러지 않으면 git filter-repo가 작동하지 않습니다.

리포지토리의 새 복제본을 만드는 경우 폴더를 별도의 리포지토리로 분할할 때 Git 기록이나 변경 내용이 손실되지 않습니다. 그러나 새 리포지토리에는 기존 리포지토리의 분기와 태그가 없습니다.

  1. Terminal(터미널)Terminal(터미널)Git Bash를 엽니다.

  2. 현재 작업 디렉터리를 새 리포지토리를 만들 위치로 변경합니다.

  3. 하위 폴더가 포함된 리포지토리를 복제합니다.

    git clone https://github.com/USERNAME/REPOSITORY-NAME
    
  4. 현재 작업 디렉터리를 복제된 리포지토리로 변경합니다.

    cd REPOSITORY-NAME
    
  5. 리포지토리의 나머지 파일에서 하위 폴더를 필터링하려면 다음 인수를 사용하여 git-filter-repo를 설치한 다음 git filter-repo를 실행합니다.

    • FOLDER-NAME: 별도의 리포지토리를 만들려는 프로젝트 내의 폴더입니다.

    Tip

    Windows 사용자는 폴더를 구분하기 위해 /를 사용해야 합니다.

    $ git filter-repo --path FOLDER-NAME/
    # Filter the specified branch in your directory and remove empty commits
    

    이제 리포지토리에는 하위 폴더에 있던 파일만 포함되어 있습니다.

    특정 하위 폴더 하나를 새 리포지토리의 새 루트 폴더로 설정하고자 하는 경우, 다음 명령을 사용하면 됩니다.

    $ git filter-repo --subdirectory-filter FOLDER-NAME
    # Filter the specific branch by using a single sub-directory as the root for the new repository
    
  6. GitHub에서 새 리포지토리를 만듭니다.

  7. GitHub의 빠른 설정 페이지에서 새 리포지토리의 상단에 있는 을(를) 클릭하여 원격 리포지토리 URL을 복사합니다.

    리포지토리의 "빠른 설정" 헤더 스크린샷. 원격 URL 옆에는 두 개의 겹치는 사각형 아이콘이 주황색 윤곽선으로 강조 표시됩니다.

    Tip

    HTTPS와 SSH URL 간의 차이점에 대한 자세한 내용은 “원격 리포지토리 정보”을(를) 참조하세요.

  8. 리포지토리에 대해 복사한 URL을 사용하여 새 원격 이름을 추가합니다. 예를 들어 일반적으로 선택하는 두 가지는 origin 또는 upstream입니다.

    git remote add origin https://github.com/USERNAME/REPOSITORY-NAME.git
    
  9. 원격 URL이 새 리포지토리 이름으로 추가되었는지 확인합니다.

    $ git remote -v
    # Verify new remote URL
    > origin  https://github.com/USERNAME/NEW-REPOSITORY-NAME.git (fetch)
    > origin  https://github.com/USERNAME/NEW-REPOSITORY-NAME.git (push)
    
  10. GitHub의 새 리포지토리에 변경 내용을 푸시합니다.

    git push -u origin BRANCH-NAME