git 상의 이벤트마다 자동으로 실행될 스크립트 지정
-> ex) commit을 할때마다 자동으로 push
.git 폴더안에 hooks라는 폴더 있음
-> 파일 끝에 .sample을 없애면 훅 실행파일이 됨
brew로 설치 : brew install gitmoji
이후
gitmoji -i
실행 파일 하나 생성됨
커밋시 이모지 선택하라는 창이 뜸
이후 git push를 하면
main-project
, submodule
양쪽 모두 파일 생성 및 작성 뒤 커밋
두 프로젝트 모두 GitHub에 각각
레포지토리 만들어 올리기
main-project 디렉토리상 터미널에서 아래 명령어 실행
git submodule add (submodule의 GitHub 레포지토리 주소) (하위폴더명, 없을 시 생략)
-> git submodule add https://github.com/wookjongkim/sub-modules.git
스테이징만 되어있어 커밋해야함
이후 sub 파일과 main 파일 각각 커밋 사항 만듬
git add. 시
메인 프로젝트의 수정 사항 만 스테이지에 올라와있음
-> main project의 깃은 submodule에 관여하지 않는것을 볼 수 있음
-> 이후 푸쉬를 하더라도 반영되지 않음
해당 폴더의 깃에서 직접 커밋을 해주어야 함
이렇게 submodule을 커밋 후 푸쉬하고 나면 main에서
서브 모듈에 변경 사항이 잡힘
즉 서브 모듈을 포함한 메인 프로젝트는 그 파일안에 변경 사항에는 관여하지 않지만, 서브 모듈에 어떠한 커밋이 발생하는 지는 관리
이후 push를 해주면
여기서 sub-modules 클릭 시 서브 모듈 리포지토리로 리다이렉 됨
이전 예시에서 사용한 main-project를 새로운 곳에 clone
단순히 clone 만 한 경우 서브 모듈에 파일들이 없음
git submodule init, git submodule update를 진행한 이후에는 파일이 생성되어있음
만약 submodule에 update 상황이 생겼을 경우
git submodule update --remote
서브모듈 안에 또 서브모듈이 있을 시: --recursive
추가