[GitHub] Submodule, 서브모듈

공부기록·2024년 1월 31일
0
post-thumbnail

.yml 파일에는 외부에 공개되면 안되는 정보가 담겨있으므로 github에 올리는 것은 보안상 좋지않으므로 원격 저장소에 업로드시 .gitignore을 이용하여 업로드되지 않도록한다.

하지만 해당 yml 파일은 모든 팀원들이 필요하므로 모든 팀원이 공유하도록 하는 작업을 하는 것이 서브모듈이다. 작업중인 Repository 이외의 private한 Repository를 하나 생성하여 그곳에 submodule로 제작할 파일을 하나 생성한다.


🔊 Main Repository에 Submodule 추가

git submodule add 'submodule로 지정된 repository의 주소' [디렉토리명]
  • 터미널에 명령어를 입력하면 .gitmodules 파일이라는 서브 디렉토리와 하위 프로젝트 URL의 매핑 정보를 담은 파일이 생성된다. 이후 원격저장소에 Push 해준다.
  • 디렉토리명은 생략가능하며 생락시 submodule의 repository명으로 폴더가 생성되고 디렉토리명을 입력하면 해당 디렉토리명으로 폴더를 생성한다.

git submodule add github.com/submodules Config


🔊 협업시 Submodule

  • 다른 팀원들도 이용하기 위해선 다음과 같은 명령어를 입력해줘야한다.
git submodule init
git submodule update

🔊 Submodule 변경

  • 로컬에서 Submodule의 파일을 변경해도 실행하면 로컬에서 변경한 내용은 없어지고 submodule repository의 내용으로 돌아간다.
  • Submodule을 다시 작성하긴 위해선
    • Submodule Repository로 가서 해당 파일을 수정한다.
    • 프로그램으로 와서 아래와 같은 명령어를 입력하면 된다.
    git submodule update --remote

🔊 No such device or address

bash: /dev/tty
  • 팀원 중 이와 같은 오류가 발생하는 일이 있었다. submodule init은 되었지만 update가 불가하다는 에러였는데 블로그와 깃허브를 찾아서 같은 오류가 난 사람들을 살펴보았지만 도움이 되지않았다. 그러다 마지막으로 본 2016년도 게시글을 보고 도움을 받을 수 있었다.

  • C:\Program Files\Git\etc
    해당 경로로 이동하면 gitconfig 파일이 존재한다. 메모장으로 수정하기를 눌러서

[credential]
    helper = manager
    helper = wincred

해당 부분을 입력해주니 submodule이 정상적으로 업데이트하는 것을 볼 수 있었다.


출처 : https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%EC%84%9C%EB%B8%8C%EB%AA%A8%EB%93%88

출처 : https://tiveloper.tistory.com/entry/Git-bash-devtty-No-such-a-device-or-address

0개의 댓글

관련 채용 정보