[GIT] submodule 사용법을 포함해서 많이 써봤어요.

2567 단어 Gitsubmodule
개인적으로 만든 도구는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
* twitter
* slack
각각 공동으로 사용하는 프로그램 라이브러리를 서브 모듈로 clone을 진행합니다.
그런 느낌이야.

좋은 웹페이지 즐겨찾기