[GIT] submodule 사용법을 포함해서 많이 써봤어요.
귀찮아요.
왜냐하면 무슨 일을 할 때마다 불평을 반복하거든요.
나는 내가 이해한 뜻을 정리하고 싶다.
그래도 다음날 또 불평하겠지.
먼저 clone의 부모 항목입니다.
main1 프로젝트에서 서브 모듈(sub)을 이용한 장면을 구상합니다.
git clone https://github.com/myrepo/main1.git
이어서 clone에서 만든main1 디렉터리 clone submodule에 들어갑니다.git submodule add https://github.com/myrepo/sub.git
이 상태에서 두드리면git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: .gitmodules
new file: sub
서브 모듈, 서브 모듈을 관리하는 점 파일을 추가했습니다.gitmodules가 추가되었습니다..gitmodules는 무엇입니까?
이gitmodules를main1에 놓고 다른 환경이나 다른 사람이main1 clone을 사용할 때
git는 gitmodules 파일의 내용을 마음대로 읽고 다른 프로젝트의 원본을 서브 모듈로 clone할 수 있습니다.
안에는 이런 느낌.
[submodule "sub"]
path = sub
url = https://github.com/myrepo/sub.git
아무튼 이 상태로 마인1을 push.
git add .
git commit -m "commit"
git push origin maseter
이렇게 github를 보면...이것은'sub 이 디렉터리가 이쪽을 참조했다(@c1eb8af)'를 가리킨다.
이거
@ c1eb8af
가 뭐냐면요.sub 프로젝트의 제출 ID가 삽입되었습니다.
submodule 참조 제출 ID
이것은 매우 중요한 점으로submodule을 이해하는 것이다
이해하기 어려운 이유 중 하나이기도 하다.
참조 제출 ID에 대해 말씀드리자면요.
지금 이대로
다른 사람이sub 프로젝트를 업데이트했다고 가정하십시오.
이후main1 프로젝트에서git pull을 했어도 방금 다른 사람이 제출한 내용을 찾지 못했습니다.
그럼 어떡하지?
마인1 바로 아래가 아니에요.
main1/sub
그리고 이 설정에서git pull 동작을 실행합니다.
(main1 바로 아래,
git submodule foreach git pull origin master
도 가능합니다.이것은 표준?)이렇게 하면 일반적인 형식으로 다른 사람이 업데이트한 내용을 현지로 가져올 수 있다.
여기 문제가 생겼어요.
main1/sub 산하pull에 들어가서 했을 거예요.
pull을 통해sub 산하의 마스터 지점 참조의 제출 번호가 변경됩니다.
그러나 부모 항목의main1에서pull 이전의 제출 번호를 참조했다.
마인1에서git status를 치면 차이가 있다는 얘기다.(제출 번호 차이)
허용되지 않는 상태입니다.
말은 그렇지만 특별히 어려운 일을 할 필요는 없다. 일반적으로 말하면
git add .
git commit -m 'さぶもじゅーる更新'
git push origin maseter
이 순서대로 하면 됩니다.이렇게 하면 원격으로 보유한main1 프로젝트 산하의sub디렉터리에서 참조하는 제출번호는sub프로젝트의 마스터의 제출번호를 참조합니다.
사용한 소감.
처음에는 상당히 걸려 넘어져서 슬펐지만, 하나하나submodule의 성질을 풀면 정상적으로 사용할 수 있었다.
저는 취미에 따라bot을 해요.
분별
* line
* slack
각각 공동으로 사용하는 프로그램 라이브러리를 서브 모듈로 clone을 진행합니다.
그런 느낌이야.
Reference
이 문제에 관하여([GIT] submodule 사용법을 포함해서 많이 써봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chatrate/items/321c976d41750a01f48b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)