Note
다음 지침을 따르려면 Git 버전 2.22.0 이상이 필요하며 그러지 않으면 git filter-repo
가 작동하지 않습니다.
리포지토리의 새 복제본을 만드는 경우 폴더를 별도의 리포지토리로 분할할 때 Git 기록이나 변경 내용이 손실되지 않습니다. 그러나 새 리포지토리에는 기존 리포지토리의 분기와 태그가 없습니다.
-
Terminal(터미널)Terminal(터미널)Git Bash를 엽니다.
-
현재 작업 디렉터리를 새 리포지토리를 만들 위치로 변경합니다.
-
하위 폴더가 포함된 리포지토리를 복제합니다.
git clone https://github.com/USERNAME/REPOSITORY-NAME
-
현재 작업 디렉터리를 복제된 리포지토리로 변경합니다.
cd REPOSITORY-NAME
-
리포지토리의 나머지 파일에서 하위 폴더를 필터링하려면 다음 인수를 사용하여
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
-
GitHub의 빠른 설정 페이지에서 새 리포지토리의 상단에 있는 을(를) 클릭하여 원격 리포지토리 URL을 복사합니다.
Tip
HTTPS와 SSH URL 간의 차이점에 대한 자세한 내용은 “원격 리포지토리 정보”을(를) 참조하세요.
-
리포지토리에 대해 복사한 URL을 사용하여 새 원격 이름을 추가합니다. 예를 들어 일반적으로 선택하는 두 가지는
origin
또는upstream
입니다.git remote add origin https://github.com/USERNAME/REPOSITORY-NAME.git
-
원격 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)
-
GitHub의 새 리포지토리에 변경 내용을 푸시합니다.
git push -u origin BRANCH-NAME