Skip to main content

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

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

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

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

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

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

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

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

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

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

    $ git filter-repo --path FOLDER-NAME1/ --path FOLDER-NAME2/
    # Filter the specified branch in your directory and remove empty commits
    > Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (89/89)
    > Ref 'refs/heads/BRANCH-NAME' was rewritten

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

  6. GitHub Enterprise Server에 새 리포지토리를 만듭니다.

  7. your GitHub Enterprise Server instance의 빠른 설정 페이지에서 새 리포지토리 맨 위에 있는 을 클릭하여 원격 리포지토리 URL을 복사합니다.

    원격 리포지토리 URL 필드 복사

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

  8. 리포지토리의 기존 원격 이름을 확인합니다. 예를 들어 일반적으로 선택하는 두 가지는 origin 또는 upstream입니다.

    $ git remote -v
    > origin  https://HOSTNAME/USERNAME/REPOSITORY-NAME.git (fetch)
    > origin  https://HOSTNAME/USERNAME/REPOSITORY-NAME.git (push)
  9. 7단계에서 복사한 기존 원격 이름 및 원격 리포지토리 URL을 사용하여 새 리포지토리에 대한 새 원격 URL을 설정합니다.

    git remote set-url origin https://HOSTNAME/USERNAME/NEW-REPOSITORY-NAME.git
  10. 원격 URL이 새 리포지토리 이름으로 변경되었는지 확인합니다.

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

    git push -u origin BRANCH-NAME