본문 바로가기

Git

레포지토리의 하위폴더를 분리해서 새로운 레포지토리로 만들기

포폴 정리를 하다가 관리도 편하고 자동 배포도 편할 것 같아서 백엔드와 프론트엔드를 같은 레포에서 관리하고 있는 프로젝트를 따로 나누기로 했다.

 

기존 디렉토리는 아래와 같이 project라는 폴더 안에 frontend와 backend가 나뉘어져 있는 상태이고, project라는 폴더에서 backend 서브 디렉토리를 별도의 깃 레포로 분리하고자 한다.

 

project/

    frontend/

    backend/

 

1. 깃헙에 새롭게 만들 repo를 만들어준다. 나 같은 경우는 백엔드를 분리하는 거라 project-backend로 명명함.

 

2. 터미널에서 분리하고자 하는 프로젝트의 폴더로 이동 후 아래의 명령어를 입력한다. 분리하려는 서브 디렉토리의 '이름'을 입력하는 것이지 경로를 입력하는 것이 아님에 주의한다.

$ cd <프로젝트 경로>
$ git subtree split -P <분리하려는 서브 디렉토리 이름> -b <새로운 브랜치 이름>


//위 디렉토리 예시
$ cd project
$ git subtree split -P backend -b splitted

 

3. 분리한 디렉토리를 담을 새로운 폴더를 생성한 후 아까 split한 브랜치를 pull한다. 나는 remote repo와 이름을 똑같이 project-backend로 지어줬다. pull할때는 프로젝트의 경로를 입력해준다.

$ mkdir ~/<새로운 폴더이름> && cd ~/<새로운 폴더 이름>
$ git init
$ git pull <분리하려는 큰 프로젝트의 경로> <아까 만든 브랜치 이름>

//위 디렉토리 예시
$ mkdir ~/project-backend && cd ~/project-backend
$ git init
$ git pull ~/project splitted

 

4. 아까 remote에 만든 원격 저장소와 연결해주고 push 한 후 깃헙에서 확인하면 분리된 것을 확인할 수 있다.

$ git remote add origin <원격 레포지토리 주소>
$ git push -u origin master

//위 디렉토리 예시
$ git remote add origin https://github.com/theJunimo/project-backend
$ git push -u origin master

 

option. 만약에 project폴더에서 backend 디렉토리를 지우고 원격저장소에도 push하고 싶다면 아래와 같이 진행한다.

//project 폴더로 이동 후
$ git rm -rf backend
$ git add .
$ git commit -m "커밋 메세지"
$ git push -u origin master

 

참고자료

Detach (move) subdirectory into separate Git repository