Git

[GitHub / Git] Subtree 사용하여 하나의 Repository에 여러 프로젝트 올리기

실버☆ 2022. 3. 29. 17:24

 

 

공부 용도의 프로젝트들을 깃허브에 모두 올리다 보니 레파지토리가 너무 많아져서 하나로 합치기로 했다.

먼저 GitHub에서 자식 프로젝트를 담을 빈 레파지토리를 하나 만들었다.

 

 

1) Git Clone

 

이제 cmd창을 열고 git subtree를 사용해 줄것이다.

윈도우와 맥에서 둘 다 해봤는데 명령어는 비슷한 것 같았다.

git clone <repogitory 주소>
//git clone http://github.com/.../Kotlin_android_studio.git

위와 같이 입력하면 해당 주소의 리파지토리를 클론해올 수 있다. 내가 만든 리파지토리는 현재 아무 커밋을 하지 않은 상태이기 때문에 'You appear to have colned an empty repository.' 라는 경고 문구가 뜬다. 하지만 경고 문구일 뿐, 현재 위치에 해당 리파지토리 이름의 디렉토리가 생성되었을 것이다. dir 명령어를 통해 확인할 수 있다.

 

 

클론이 완료되면 cd 명령어를 사용해 방금 가져온 리파지토리의 디렉토리로 이동해준다.

cd Kotlin_android_study

 

 

1) Subtree

 

이제 서브로 부모 레파지토리에 넣어줄 자식 레파지토리들을 가져올 것이다.

git subtree add --prefix=<폴더 이름> <repository 주소> <branch 이름>
//git subtree add --prefix=project1 http://...git master

여기서 '폴더 이름'은 깃허브에서 보여질 폴더의 이름을 설정하는 것이다.

브랜치명이 master이므로 그대로 입력해 주었다. 이때 'ambiguous argument 'HEAD': unknown revision or path not in the working tree.' 라는 오류 메시지가 뜨며 레파지토리가 제대로 추가되지 않았다는 문구가 뜬다.

 

그 이유는 현재 부모 레파지토리에 아무 커밋이 없어 브랜치가 모호하기 때문인데, 이때는 아무 내용이나 커밋을 해줌으로써 문제를 해결할 수 있다.

 

>git commit --allow-empty -n -m "Initial commit."

위와 같이 빈 내용을 커밋해준다.

이후에 다시 레파지토리를 mater 브랜치로 가져오는 명령어를 작성해주면 정상적으로 추가가 되는 것을 볼 수 있다.

 

Added dir '폴더 이름'

 

 

1) GitHub Push

 

이제 마지막으로 깃허브에 push를 해주면 된다.

git push origin master

 

모든 과정을 완료하고 해당 레파지토리의 깃허브를 확인해 보면, 방금 추가한 프로젝트가 폴더의 형식으로 잘 커밋된 것을 볼 수 있다. ((커밋명을 설정하지 않아서.....커밋명이 조금 더러움

 

이러한 과정을 똑같이 반복해 다른 프로젝트들도 subtree를 이용해 한 레파지토리에 올리면 끄읏

 

 

 

 

'Git' 카테고리의 다른 글

[Android Studio / Git] commit author 수정하기  (0) 2022.03.16