GIT 서브모듈 만들었다가 다시 원복했다..

mylike.24·2022년 4월 1일
0

처음 목표

Udemy에서 React 강의 진행중에 만든 프로젝트들을 일종의 tree 구조로 관리하고 싶었다.

찾은 방안

알아보니 GIT에는 submodule이란 게 있어서 부모 레포의 커밋 내용과 자식 레포의 커밋 내용을 따로 관리할 수가 있다고 한다. 서브모듈로 만들어보자!

실행 과정

  1. 각각의 자식 프로젝트에서 git init을 한 것과 별개로 부모 디렉토리에서 git init을 실행하고 submodule을 추가했다.
    이후 커밋된 내용을 푸시를 했더니 (당연하게도) 자식 레포가 올라가지 않는다.
  2. 자식 레포를 각각 리모트 레포지터리를 만들어서 푸시를 하고,
    부모 레포에서 서브모듈의 URL을 변경하여 다시 푸시했더니 깃헙에서 정상적으로 연결이 된다.

실행 결과

이 과정에서 깃헙에 올라간 나의 레포가 3개나 늘었다.. 근데 생각해보면 3개씩이나 올라갈 필요는 없는 것 같다. 그냥 하나의 레포지터리에서 관리하는 게 낫겠다. 그리고 사실 레포지터리명만 보면 어느 게 부모인지 자식인지 레포지터리간의 관계를 유추하기가 쉽지 않았다. 이게 가장 큰 문제였다..

다시 돌리기

처음엔 멋모르고 git submodule deinit /path/to/submodule 을 실행했다가 코드가 날아갔다. 자식 레포의 .git 파일(?)만 부모 레포의 .git 파일(?) 내부로 들어가고 코드가 날아감...
git submodule update를 통해 살렸다.....

그러니까 결국 자식 레포는 .git 을 삭제하면 되는 거였고 부모 레포의 .submodules 파일은 삭제해주면 되는... 그런 문제였던 것 같다.
잘 안 돼서 git rm --rf --cached path/to/submodule 명령어로 캐시를 날리기도 해보았다. 유효했는지까지는 잘 모르겠다.

추가로 알게된 것

  1. 프로젝트 자체는 공개 레포로 관리하면서 비공개 레포에 application-product.properties에 담기는 중요한 내용(DB 접속 URL, ID, PW) 같은 걸 올려놓고 별도로 관리할 수 있다고 한다.
profile
삐약삐약...

0개의 댓글

관련 채용 정보