IT story

외부 저장소 하위 모듈을 사용하도록 git 프로젝트를 설정하는 방법은 무엇입니까?

hot-time 2020. 5. 5. 19:35
반응형

외부 저장소 하위 모듈을 사용하도록 git 프로젝트를 설정하는 방법은 무엇입니까?


원격 저장소를 가져 오는 저장소를 만들고 싶습니다.

예를 들어, jQuery를 하위 모듈로 가정 해 보겠습니다.

git://github.com/jquery/jquery.git

jQuery를 하위 모듈로 사용하여 리포지토리를 만들고 내 외부를 원격 리포지토리로 추가하는 프로세스는 무엇입니까?

또한 이것이 설정되면, 내 리모컨으로 밀거나 당기면 외부가 손상되지 않습니까?


  1. 프로젝트가 있습니다- 이미 github 저장소가있는 MyWebApp 이라고하십시오.
  2. 프로젝트에서 jquery 저장소 를 사용하려고합니다
  3. jquery repo를 하위 모듈 로 프로젝트에 가져오고 싶습니다 .

서브 모듈은 실제로 참조하고 사용하기 쉽습니다. 이미 MyWebApp을 저장소로 설정했다고 가정하면 터미널에서 다음 명령을 실행하십시오.

cd MyWebApp
git submodule add git://github.com/jquery/jquery.git externals/jquery

externals/jquery* 라는 디렉토리가 생성 되어 github jquery 저장소에 연결됩니다. 이제 하위 모듈을 초기화하고 코드를 복제하면됩니다.

git submodule update --init --recursive

이제 모든 최신 코드를 서브 모듈에 복제해야합니다. jquery 저장소가 변경되고 최신 코드를 가져 오려면 submodule update명령을 다시 발행 하십시오. 참고 : 일반적으로 프로젝트에 여러 외부 저장소가 있으므로 항상 "외부"디렉토리 아래에 저장소를 그룹화합니다.

온라인 Pro Git Book 에는 읽기 쉬운 방식으로 제공되는 하위 모듈 (및 일반적으로 git)에 대한 유용한 정보가 있습니다. 또는 git help submodule좋은 정보도 제공합니다. 또는 git wiki 에서 Git Submodule Tutorial보자 .

하위 블로그에 대해 이야기하고 Subversion의 svn : externals 메커니즘과 비교하는이 블로그 항목을 발견했습니다. http://speirs.org/blog/2009/5/11/understanding-git-submodules.html

* 모범 사례로서 항상 서브 모듈을 외부와 같은 자체 디렉토리에 배치해야합니다. 그렇지 않으면 루트 프로젝트 디렉토리가 매우 어수선해질 수 있습니다.


당신이 알아야 할 대부분의 답변은 이미 답변되었으므로 다루지 않겠지 만 일반적으로 누락 된 작은 정보를 찾았습니다.

아시다시피 "git pull"은 하위 모듈을 업데이트하지 않으며 "git submodules update"는 해당 하위 모듈의 최신 HEAD도 다운로드하지 않습니다.

모든 하위 모듈을 최신 업스트림 개정으로 업데이트하려면

git submodule foreach git pull

하위 모듈을 자주 변경하고 많은 모듈을 가지고 있다면 "git foreach"가 매우 중요해집니다.


결국 나는 http://github.com/evilchelu/braid를 발견 했다. 서브 모듈과 리모컨이 어떻게 작동하는지 예상 한 것과 일치하는 것처럼 보였다.


@ Hugo의 대답은 당신이 필요로하고 잘 작동 할 수 있다고 생각합니다. 그래서 더 쉬운 방법을 찾았습니다.

git submodule update --remote

그게 다야.

따라서 완전한 워크 플로는 다음과 같습니다.

git clone project-with-submodules
git submodule init
git config -l
git submodule update --remote

참고 URL : https://stackoverflow.com/questions/2140985/how-to-set-up-a-git-project-to-use-an-external-repo-submodule

반응형