현대 소프트웨어 프로젝트는 주로 다른 프로젝트의 작업 결과에 의존합니다. 다른 사람이 우수한 솔루션을 작성하고 코드에서 바퀴를 재창조한다면, 그것은 큰 시간 낭비 일 것입니다. 그렇기 때문에 많은 프로젝트가 라이브러리 나 모듈과 같은 타사 코드를 사용하는 이유입니다.
아마도 패키지 관리자를 통해 모든 코드를 사용할 수있는 것은 아닙니다. 두 프로젝트간에 자신의 코드를 공유하고 싶을 수도 있습니다.이 경우 하위 모듈은 가장 쉬운 프로세스를 제공 할 수 있습니다.
git 리포지토리 에 위치한다는 것입니다. 그 외에는 GIT 하위 모듈은 여전히 완전히 기능적인 저장소입니다. "정상적인"git 작업에서 이미 알고있는 모든 것을 수행 할 수 있습니다. 파일 수정에서 커밋, 당기고 밀고 푸시하는 것에 이르기까지. 하위 모듈의 모든 것이 가능합니다.
하위 모듈 추가전형적인 예를 들어 보자. 프로젝트에 타사 라이브러리를 추가하고 싶다고 가정 해 봅시다. 코드를 얻기 전에 그러한 컨텐츠를 저장할 별도의 폴더를 만드는 것이 합리적입니다.
<code class="language-bash">$ mkdir lib $ cd lib</code>이 .gitModules 파일은 GIT 추적 프로젝트의 서브 모듈에 대한 여러 위치 중 하나입니다. 다른 하나는 .git/config이며 이제 다음과 같이 끝납니다.
<code class="language-bash">$ git submodule add https://github.com/spencermountain/spacetime.git</code>
이 경우, 상위 저장소를 복제 한 후 하위 모듈을 채우려면 단순히 GIT 하위 모듈 업데이트 (Init -Recursive를 수행 할 수 있습니다. 더 좋은 방법은 처음으로 Git 클론을 호출 할 때-Recurse-Submodules 옵션을 직접 추가하는 것입니다.
"정상 "git 저장소에서 일반적으로 분기를 확인합니다. GIT Checkout & lt; Branch Name & Git; Branch Name & Gt; 이 지점에서 새로운 커밋이 이루어지면 헤드 포인터는 자동으로
를 최신 커밋으로 이동합니다. git 서브 모듈이 다르게 작동하기 때문에 이것을 이해하는 것이 중요합니다!<code>Cloning into 'carparts-website/lib/spacetime'... remote: Enumerating objects: 7768, done. remote: Counting objects: 100% (1066/1066), done. remote: Compressing objects: 100% (445/445), done. remote: Total 7768 (delta 615), reused 975 (delta 588), pack-reused 6702 Receiving objects: 100% (7768/7768), 4.02 MiB | 7.78 MiB/s, done. Resolving deltas: 100% (5159/5159), done.</code>
커밋
는 지점 자체가 아닌 기록됩니다.<code>[submodule "lib/spacetime"] path = lib/spacetime url = https://github.com/spencermountain/spacetime.git</code>물론,이 행동은 실수가 아닙니다. 이것을 고려하십시오 : 타사 라이브러리를 포함하면 기본 프로젝트에서 사용하는 정확한 코드를 완전히 제어 할 수 있습니다. 라이브러리의 관리자가 새 버전을 출시 할 때 좋습니다. 그러나 프로젝트 에서이 새 버전을 자동으로 사용하고 싶지는 않습니다. 이러한 새로운 변경 사항이 프로젝트를 중단할지 모르기 때문입니다!
하위 모듈 포인터를 옮겼습니다. 우리는 다른 버전을 체크 아웃하고 제출하여 팀의 원격 저장소로 푸시하는 사람들입니다. 그러나 우리 동료가 하위 모듈 버전을 변경했다면 어쩌면 흥미로운 새 버전의 하위 모듈 버전이 출시되었고 동료가 프로젝트에서이를 사용하기로 결정했기 때문에 (물론 철저한 테스트 후).
예를 들어, 서브 모듈의 새로운 변경 사항을 확인하는 것은 다른 Git 저장소에서와 같습니다. 하위 모듈 저장소에서 Git Fetch 명령을 실행하고 업데이트를 사용하려면 Git Pull Origin과 같은 것을 실행할 수 있습니다. 명령. git의 힘을 얻으십시오
git 하위 모듈에 대한 자주 질문
왜 git 하위 모듈을 사용합니까?
서브 모듈을 포함하는 git 저장소를 복제하는 방법은 무엇입니까? <code class="language-bash">$ mkdir lib
$ cd lib</code>
를 사용하기를 원한다고 가정 해 봅시다. 먼저, 우리는 주요 프로젝트가 아닌 서브 모드의 맥락에서 GIT 명령이 실행되도록 디렉토리를 변경해야합니다. 그런 다음 태그 이름으로 단순히 git 체크 아웃을 실행할 수 있습니다.
<code class="language-bash">$ git submodule add https://github.com/spencermountain/spacetime.git</code>
업데이트
<code>Cloning into 'carparts-website/lib/spacetime'...
remote: Enumerating objects: 7768, done.
remote: Counting objects: 100% (1066/1066), done.
remote: Compressing objects: 100% (445/445), done.
remote: Total 7768 (delta 615), reused 975 (delta 588), pack-reused 6702
Receiving objects: 100% (7768/7768), 4.02 MiB | 7.78 MiB/s, done.
Resolving deltas: 100% (5159/5159), done.</code>
<code>[submodule "lib/spacetime"]
path = lib/spacetime
url = https://github.com/spencermountain/spacetime.git</code>
git 서브 모드 사용
<code>[submodule "lib/spacetime"]
url = https://github.com/spencermountain/spacetime.git
active = true</code>
위 내용은 git에서 서브 모듈을 이해하고 작업합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!