어디있니 프로젝트를 진행할 때는 springboot과 react를 이용해서 프로젝트를 만들면 하나의 레파지토리에 담아야한다고 생각했었다.
이후 여러개의 프로젝트를 진행하다보니 백엔드와 프론트의 레파지토리가 분리되어있는 게 훨씬 작업하기도 다른 사람들이 코드를 읽기도 편하다는 것을 알게 되었다.
늦었지만 지금이라도 분리해보려고 한다.
목표는 다음과 같다.
where42 레파지토리의 src/main/where42에 담겨있는 모든 프론트엔드 파일을 새로운 레파지토리인 where42_front_v1레파지토리에 옮기는 것이다.
그래서 다음과 같이 진행했다.
(나는 이때 혹시 몰라서 예전에 클론해둔 디렉토리가 아닌 새로운 디렉토리를 생성해서 작업했다.)
subtree를 생성하면 작업 했던 커밋 내역도 함께 분리된다.
이때 명령어는 $ git subtree split -P <옮길 폴더 명> -b <브랜치 이름>
이다.
이때 명령어는 git pull <기존 레파지토리> <브랜치명>
이다.
git remote -v
명령어로 옮겨 갈 레파지토리가 잘 연결 되었는지 확인 후 git push
를 진행한다.git log
명령어로 commit history도 잘 복사되었는지 확인한다.복사끄읕~~~
이제 이전 레파지토리에 남아있는 디렉토리가 필요가 없다면 rm-rf로 삭제하고, git commit도 진행해주면 된다.
나는 이전 레파지토리에 남아있는 디렉토리의 내용은 삭제하고 새로 만든 레파지토리의 서브모듈을 연결해주려고 한다.
삭제를 위해 브랜치를 생성하고, 삭제를 진행하고, 커밋을 하고, 풀리퀘를 올리고, 머지까지 진행했다.
git submodule add <연동할 깃 저장소 주소.git> <연동할 메인 저장소의 경로>
이게 서브모듈의 기본 명령어인데,
나의 경우엔 where42/src/main/where42에 where42_front_v1을 연결해주려고 하므로,
git submodule add <where42_front_v1 레파지토리 주소> src/main/where42
를 where42 디렉토리의 루트레벨에서 진행해준다.
서브모듈이 추가되면 git submodule update --init --recursive
서브모듈을 초기화하고 업데이트해주는 명령어로 서브모듈을 업데이트한다.
서브모듈이 업데이트 되면 .gitmodules 파일에 서브모듈 관련 정보가 추가된다. 이 파일을 다시 브랜치에서 commit하고
풀리퀘하고, 머지까지 해주면..?
서브모듈까지 완성~~~