Submodule 이란
- 하나의 Git 저장소(레포지토리) 내에 또 다른 Git 저장소를 하위 디렉토리로 통합해 넣는 것을 말합니다.
- 저희 조는 .env 파일과 같은 민감정보를 편리하고 안전하게 공유하기 위해 private 레포지토리를 생성해 서브모듈로 등록해보았습니다.
- git의 서브모듈은 하위 디렉터리 내에서 변경 사항이 발생해도 상위에서 바로 반영되지 않고, 서브 모듈 자체를 하나의 커밋 단위로서 관리합니다.
- 서브 모듈에서 변경되었던 사항들이 추적되지 않고, 커밋 단위로 나타내지며 볼 수 없도록 되어 있습니다.
사용방법
서브모듈 세팅
git submodule add [repo-url] [path] # 현재 프로젝트 루트 디렉토리에서 submodule 등록
- git submodule add 명령어를 수행하면 루트 경로에 .gitmodules 파일이 생성된 것을 확인할 수 있습니다.
- # .gitmodules 파일 내용 [submodule "omp-private"] path = omp-private url = <https://github.com/I-Oteam/omp-private.git>
서브모듈 활용
- 서브모듈 시작/업데이트
git submodule init # 서브모듈 시작
git submodule update --remote # 필요시 서브모듈 업데이트 수행
git submodule update --remote --merge # 로컬에서 작업 중인 부분과 원격에 작업된 부분이 다른 경우 머지까지 진행
- 서브모듈 commit/push
cd submodule-dir
git add .
git commit -m "docs: example"
git push
cd ..
# submodule 커밋 변경사항 함께 메인 깃 레포지토리에 커밋/푸시
- 서브모듈 상태 확인하기
git submodule status
빌드 시에 .env 파일 복사하기
# build.gradle 파일에 아래와 같은 task를 추가
task copyEnv(type: Copy) {
copy {
from './omp-private/.env'
into './'
}
}
github actions 에서 submodule 적용하기
# github-actions.yml 파일
- name: Checkout code
uses: actions/checkout@v3
with:
token: ${{ secrets.ACTIONS_TOKEN }}
submodules: true
참고 페이지
'Sever > Tools' 카테고리의 다른 글
[Nginx+Certbot+Let's encrpyt+Docker]https 통신을 위한 ssl(tls)인증서 등록하기 (0) | 2023.09.05 |
---|---|
Git 활용 (0) | 2021.01.31 |