submodule

박태영·2024년 6월 22일
0

git

목록 보기
35/44

submodule

  • 하나의 Git 저장소 안에 또 다른 Git 저장소를 포함시키는 기능
  • 상위 저장소에서 하위 저장소의 git 정보를 추적 한다
  • 여러 프로젝트에서 공유되는 모듈형 프로젝트등에 쓰인다.

실습 메인/서브 저장소

  1. 폴더를 만들고 임시 파일을 하나 생성한다.

    2.메인 저장소가 될 로컬 저장소를 초기화 하고 내용을 커밋한다.
  2. 원격 레포지토리를 만들고 push 한다.
  3. submodule을 위한 원격 레포지토리를 만든다음 파일을 만들어 업로드 한다.
    • create a new file 클릭
    • 파일 내용 입력후 Commit changes 클릭
  4. 메인저장소에서 원격에 있는 submodule을 불러오기위해 다음과 같은 명령어를 입력한다.
    git submodulle add (submodule의 원격 저장소 주소)
  5. submodule의 새로운 폴더와 .gitmodules파일이 생성된 것을 확인한다.
  6. 해당 폴더와 파일들은 스테이징만 되어있는 상태기 때문에 과정을 완료하기 위해 commit 해준다.
  7. submodule의 작동 방식을 확인하기 위해 상위 저장소와 모듈 저장소 파일 둘다 수정한다.
  8. git add .을 입력하고 status를 확인해보면 메인 저장소 파일만 스테이징 된 것을 확인할 수 있다
    • ℹ️ 메인 저장소는 submodule에 직접적으로 관여하지 않는다.
  9. git push를 입력하면 메인저장소는 바뀌었지만 submodule 저장소는 바뀌지 않은걸 확인할 수 있다.
  10. 터미널을 추가로 연 뒤에 서브모듈 폴더에 들어가 git add . 를 입력하고 원격 저장소에 push를 해준다
  11. 원격 저장소에 변경사항이 업로드 된것을 확인할 수 있다.
  • 메인 저장소는 서브 저장소에 일어난 변화에 관여하지 않지만 어떤 커밋이 일어났는지는 저장한다.
  1. 서브 저장소의 변화를 메인 저장소에서 commit 하고 push 한다
  2. 서브저장소의 변화가 메인 저장소에 업로드 된것을 확인할 수 있다

실습 - 모듈 구조 저장소의 클론

  1. 새로운 폴더에 원격의 메인저장소를 클론한다.
    git clone (원격 저장소 주소)
  2. 메인 저장소를 클론해 와도 서브저장소의 파일들은 가져오지 않는다.
  3. 서브 저장소의 내용을 가져오기 위해서는 먼저
    git submodule init을 입력하여 서브저장소를 초기화 해
    준다.
    • 서브 저장소가 여러개인 경우 .gitmodules 파일의 서브모듈 명을 init뒤에 붙여서 초기화 할 서브 저장소를 특정할 수 있다.
  4. git submodule update를 입력해서 서브저장소의 파일을 다운 받을 수 있다.
  5. 원격의 서브 저장소의 변화를 다운 받기 위해서는
    git submodule update --remote를 입력한다.
  • 서브 저장소 안에 서브 저장소가 중첩되어 있을 경우 --recursive 를 붙여주면 재귀적으로 모든 모듈을 받을 수 있다.
profile
어른 아이

0개의 댓글

관련 채용 정보