본문 바로가기
TIL 기록/git_github

Git submodules

by 지난_JINAN 2024. 2. 19.
Git / GitHub 강의 정리-36
Submodules

프로젝트 폴더 안에 또 다른 프로젝트가 포함될 때 사용
여러 프로젝트에 사용되는 공통 모듈일 때 유용함

 

 

Submodules 사용을 위한 프로젝트 생성

1. 메인 프로젝트 생성
 - 프로젝트 생성 후 파일 생성 - git init로 git이 관리하도록 지정
 - 커밋
2. 서프 모듈 프로젝트 생성
 - 프로젝트 생성 후 파일 생성 - git init로 git이 관리하도록 지정
 - 커밋
3. 메인 프로젝트와 서브 모듈 모두 github에 레포지토리 만들어 올리기
 - or github에서 생성

 

레포지토리 생성

 

복사
터미널에서 실행
깃헙에서 확인

 

2. 깃헙에서 서브모듈 프로젝트 만들기

submodule 레포지토리 생성 후 creating a new file로 파일 생성

 

파일명과 내용 작성 후 commit

 

생성한 파일 확인

 

main_project에 서브모듈로 submodule 프로젝트 추가하기

# main_project 디렉토리의 터미널에서 아래 명령어 실행
git submodule add (submodule의 GitHub 레포지토리 주소) (하위폴더명, 없을 시 생략)

 

 

메인 프로젝트 아래에 서브모듈 프로젝트 생성 확인
.gitmodules 파일 안에 파일 경로와 어느 폴더인지 작성되어있음
staging 된 상태
commit 후 메시지 작성 - esc - :wq로 저장 후 종료
submodule 추가된 것 확인

main_project와 submodule에서 각각 변경사항 commit 후 push 후 결과 확인

1. main_project와 submodule에서 수정사항 저장 후 main_project에서 status 확인
 - 두 변경사항 모두 확인됨
2. main_project에서 git add .  후 status 확인
 - submodule의 변경사항은 포함되지 않음
 - main_project의 깃은 submodule의 파일에 관여하지 않음
3. commit, push 후 github 확인
 - main_project의 변경사항만 반영된 것 확인

 

main.txt 수정 후 저장
sub_file 수정 후 저장

 

1. 두 변경사항 모두 확인됨
2. add 후 status 확인 결과 main_project의 파일만 staging 된 상태임을 확인
commit 후 push

 

3. main_project에 변경사항 반영 확인
submodule은 변경사항 반영되지 않음 확인

 

submodule의 변경사항을 반영하고자 하는 경우

1. 터미널 추가로 열기
 - cd submodule/로 submodule의 깃 사용하도록 지정
2. git status 확인
3. git add .
4. commit 후 push
5. submodule의 레포지토리 확인
 - submoldule에 변경사항 반영 확인

split terminal 선택
submodule의 깃을 사용하도록 지정
status 확인
add 후 확인
commit 후 push
submodule 레포지토리에서 변경사항 반영 확인

submodule 프로젝트에 변경사항 반영 후 main_project 확인

1 main_project에서 status 확인
 - submodule에서 변경사항이 있음을 확인
2. add 후 status 확인
 - submodule의 commit된 변경사항을 main_project의 git에서 관리함
   ( submodule 프로젝트의 변경사항 관리, commit되지 않은 파일의 변경사항은 관리하지 않음 )

3. commit 후 push
4. main_project 레포지토리 확인
 - submodule의 commit된 변경사항 반영 확인

 

main_project에서 status 확인
add 후 status 확인
commit 후 push
submodule 프로젝트 변경사항 반영 확인

다른 곳에서 프로젝트 클론 후 서브모듈 업데이트하는 경우

1. main_project 새로운 곳에 clone 하기
 - 원하는 폴더 안에서 git bash here 클릭
 - git clone (프로젝트 주소)
2. vscode 새 창에서 클론한 프로젝트 열기
 - submodule의 파일은 받아오지 않음 (서브모듈이 필요한 경우 필요한 서브모듈 받아와야 함)
3. 서브모듈 init 후 클론
 - git submodule init (특정 서브모듈 지정시 .gitmodules 파일 내의 해당 이름)
 - git submodule update
4. github에서 서브모듈에 변경사항 커밋하기
5. main_project에서 git submodule update --remote 로 변경사항 받아오기
 - main_project의 변경사항을 받아올 경우 git pull 하기
 - 서브모듈 안에 서브모듈이 있는 경우
    - git submodule update --remote --recursive 로 변경사항 받기

클론하고자 하는 위치에서 git bash here 선택
git clone 후 main_project 파일 확인
main_project 클론만으로는 submodule의 파일이 받아와지지 않음
서브모듈이 여러개일 경우 필요한 모듈만 받을 수 있음 - .gitmodules 파일 내 서브모듈 이름 확인
서브모듈이 하나일 경우 git submodule init 만으로 실행 가능
git submodule update 후 submodule 파일 받아온 것 확인
submodule에 변경사항 추가
submodule의 변경사항 update
추가된 변경사항 update 확인

 

 

 

 

강의 섹션 12. Git의 추가 기능들 ( 2 )
 

제대로 파는 Git & GitHub - by 얄코 - 인프런 | 강의

코알못도 따라올 수 있는 친절하고 쉬운 강좌! 현업 개발자는 Git 박사로 들어주는 끝판왕 강좌!, Git & Github, 얄코와 함께 제대로 판다!  ⭐️  대학교 이메일 계정이 있다면?🎓  대학생 반값쿠

www.inflearn.com

 

'TIL 기록 > git_github' 카테고리의 다른 글

오픈소스 참여 / fork  (0) 2024.10.28
pull request / Issue  (1) 2024.10.28
Git Hooks, gitmoji-cli 활용  (0) 2024.02.08
git bisect 오류발생 시점 찾기  (0) 2024.02.01
git blame 코딩 작성자 확인  (0) 2024.01.26