https://rutgo-letsgo.tistory.com/264

 

Git Submodule 설정하기

Git Submodule 설정하기 서브모듈(Submodule)이란? 하나의 저장소 안에 있는 또 다른 별개의 저장소입니다. 보통 다른 원격 저장소를 가져와 서브모듈을 사용하게 됩니다. 🔨서브모듈(Submodule) 설정 git

rutgo-letsgo.tistory.com

Git Submodule 설정하기

서브모듈(Submodule)이란?

  • 하나의 저장소 안에 있는 또 다른 별개의 저장소입니다.
  • 보통 다른 원격 저장소를 가져와 서브모듈을 사용하게 됩니다.

🔨서브모듈(Submodule) 설정

git submodule add https://github.com/{사용자명}/{저장소명}.git {폴더명}
  • 위의 명령어를 실행하면 지정한 폴더명으로 폴더가 생성되면서 서브모듈이 생성됩니다.
  • 저는 아래와 같이 명령어를 사용했습니다.
git submodule add https://github.com/Meet-Coder-Study/study-platform-submodule.git config
  • 아울러 아래와 같이 .gitmodules라는 파일이 생성됩니다.
[submodule "config"]
    path = config
    url = https://github.com/Meet-Coder-Study/study-platform-submodule.git
  • 서브모듈을 연결했다면 서브 모듈을 업데이트를 해줘야 하는데요. 아래와 같은 명령어를 사용하면 됩니다.
git submodule update --init --recursive
  • 이후에 commit후 push를 하면 아래와 같이 나오는걸 확인할 수 있습니다.

서브모듈이 있는 프로젝트 clone

git clone --recurse-submodules https://github.com/{사용자명}/{저장소명}.git
  • 위의 명령어를 사용하면 쉽게 clone을 할수 있습니다.

서브모듈 업데이트

git submodule update
  • 위의 명령어를 사용하면 서브모듈의 변경 사항을 업데이트 하게 되는데요. 하지만, 서브모듈 로컬 저장소는 Detached HEAD 상태로 남게 됩니다. 즉, 내용을 추적하는 로컬 브랜치가 없게 됩니다.
  • 따라서 아래와 같이 명령어에 옵션을 추가해주면 upstream에서 변경된 커밋을 가져오게 됩니다.
git submodule update --remote
git submodule update --init --recursive
  • 위 명령어를 사용하면 서브모듈을 초기화해서 master(main)을 기본적으로 최신으로 업데이트가 하게 됩니다.

서브모듈 default brach 변경하기

git config -f .gitmodules submodule.{서브모듈명}.branch
{변경하고 싶은 브랜치명}
  • 기본적으로 submodule은 master(main)을 바라보고 있게 된다. 원하는 브랜치가 있다면 위의 명령어를 이용해 변경해주면 된다.

🔖 팁

  • 개발을 할 때 숨겨야 할 값이 있어야 할때, private 저장소를 만들어 submodule로 연결해놓는다.
  • 예를들어 DB 정보 값 같은 경우는 외부에 노출되면 안되는데, 그럴 경우 서브모듈을 이용하면 손쉽게 숨길수 있다.
  • Java 개발 시 멀티 모듈 방식을 이용해 개발을 할 경우 여러 군데에서 값이 필요할 수가 있다.
  • Gradle을 사용한다면 아래와 같이 copy task를 사용하면 쉽게 복사해 여러 군데에 서브모듈에 있는 파일을 이용할 수 있다.
task copyConfigSettings(type: Copy) {
    description = "Copy application-*.yml from config"
    from './config'
    into 'src/main/resources/'
}

출처

Git 의 서브모듈(Submodule)

Git - 서브모듈

'Diary > Notepad' 카테고리의 다른 글

앞으로 할 일 메모  (0) 2023.09.07
리눅스 메모  (0) 2023.08.21
그래픽스 강의 목록  (0) 2023.06.29
#1 주의 사항  (0) 2023.06.13
Git Bash 명령어  (0) 2023.05.12