본문 바로가기

개발 관련/git

git subtree를 이용해 github 정리하기

별로 중요한 것도 없는데 늘어나기만 하는 레파지토리가 신경 쓰였다.

더 늘어나기 전에 카테고리별로 정리를 하고 싶어서 subtree를 이용해 정리를 하고자 했다.

 

💡 HOW TO?

1. 일단 합치고자 하는 부모 repository를 만든다. 참고로 빈 레파지토리에서 진행을 하려니 오류가 나서 README.md 파일을 생성하고 시작했다.

상단 + 버튼

 

2. 새로 만든 부모 repository의 url을 복사한 후,  git clone을 통해 내 local에 받는다.

git clone {새로 생성한 repository 주소}

 

3. 부모 레파지토리에 넣어줄 자식 레파지토리의 주소를 복사한 후, git remote add로 부모 레파지토리에 연결해준다. git remote -v로 연결이 잘 되었는지 확인해준다.

git remote add {지정할 remote 이름} {git repository 주소}

 

4. 방금 연결한 remote를 subtree로 등록해준다. 원격 브랜치 이름은 자식 repository에서 데려올(pull) 브랜치명을 사용했기 때문에 master나 main을 사용했다.

방금 open-stat-ui라는 명으로 remote를 생성했기 때문에 자식 remote 이름은 open-stat-ui가 되며, 부모 repository에 등록할 이름은 마음대로 지어도 되지만 자식 remote명과 동일하게 맞춰줬다.

git subtree add --prefix={부모 repository에 등록할 이름} {자식 remote 이름} {원격 브랜치 이름}

 

5. 원하는 자식들을 다 추가했으면, git push로 등록해주고, 기존의 널브러져 있던 자식 레파지토리들은 삭제해준다.

git push

잘 올라가져 있는 것을 확인할 수 있다.

 

 

📌 참고로 submodule은 subtree와 반대되는 개념인데, Subtree는 이와 같이 여러 개의 프로젝트를 하나로 합치는 역할을 하고 submodule은 말 그대로 여러 프로젝트를 나누는 것으로 큰 프로젝트를 여러 개 나눌 때 사용한다.