-
Github - 저장소들을 합치고 싶을 때 (feat. subtree)카테고리 없음 2021. 6. 27. 20:16
오늘도 한 걸음 내디뎠다.
이 글에 들어오신 분들은 아마 저와 똑같은 고민을 하셨을 거예요.
깃허브를 체험하며 신나는 마음에 레파지토리를 이것저것 만들어 놨는데
하나의 레파지토리로 합치고 싶어진 거죠 !
그럴 때를 위하여 간단하게 작성했습니다 ㅎㅎ
1. 시나리오
Apple, Banana, Orange 이 3개의 레파지토리를 FruitBox에 담을 것입니다.
새 레파지토리로 이동하려는 기존의 레파지토리들 기존의 레파지토리들을 담을 새 레파지토리 기존 레파지토리 폴더 안에는 이렇게 Seed, Leaf, Fruit.html 파일들이 담겨 있다.
Apple 레파지토리의 내부 하나 하면 다음 것은 반복작업이라 Apple 레파지토리를 옯겨 보겠습니다
2. 기존 저장소 복사하기
git clone <FruitBox의 깃허브 주소> cd FruitBox
터미널에 위 명령어를 적으면 github의 FruitBox가 내 폴더에 복제 된다.
그리고 cd로 복제된 FruitBox로 이동해준다.
FruitBox에 아무것도 없어서 empty repository라 뜬다. 여기서 Apple, Banana, Orange의 최종 목적지를 정리하면
- Apple repository => FruitBox repository의 Apple 폴더
- Banana repository => FruitBox repository의 Banana 폴더
- Orange repository => FruitBox repository의 Orange 폴더
그래서 mkdir로 FruitBox 폴더 내에 Apple 폴더를 만들어준다.
3. Apple을 FruitBox로 이사하기
드디어 대망의 이사 !!
이번에 사용할 명령어는 이 두 줄이다.
git subtree add --prefix=[로컬 디렉토리명] [저장소 명] [child에서 pull할 branch명] ls -lh Apple
여기서 잠깐 Subtree란?
- Subtree 실제로는 개별 프로젝트인 여러 개의 프로젝트를 개발자의 로컬에서 하나의 repo로 관리할 수 있게 해준다. SBD(system-based development)에 가까우며, 모든 저장소는 모든것을 포함하고, 각 부분을 수정 가능하다. 또한 코드와 이력이 그대로 복사되기 때문에 히스토리 관리하기 좋다.