gitaarik/git_submodules.md (한국어)

0 Comments

왜 서브 모듈인가?

Git 에서는 저장소에 하위 모듈을 추가 할 수 있습니다. 이것은 기본적으로 기본 저장소에 포함 된 arepository 입니다. 이것은 매우유용합니다. 하위 모듈을 사용하는 몇 가지 장점:

  • 코드를 다른 저장소로 분리 할 수 있습니다.

    큰 구성 요소가있는 코드베이스가있는 경우 acomponent 를 하위 모듈로 만들 수 있습니다. 이렇게하면”더 깨끗한 Git 로그가 있습니다(커밋은 특정 구성 요소에 특정됩니다).,

  • 하위 모듈을 여러 저장소에 추가 할 수 있습니다.

    samecomponents 를 공유하는 여러 저장소가있는 경우 유용합니다. 이 접근 방식을 사용하면 쉽게 업데이트 할 수 있습니다.하위 모듈로 추가 한 모든 저장소의 구성 요소.이것은 코드를 복사하여 붙여 넣는 것보다 훨씬 더 convienient 입니다.

기초

을 추가할 경우 서브모듈 Git 을 사용하면,당신은”t 추가 코드의 thesubmodule 주소,당신은 단지에 대한 정보를 추가 thesubmodule 는 추가 주장합니다., 이 정보는 하위 모듈이 가리키는 커밋을 나타냅니다. 이 방법으로 서브 모듈”srepository 가 업데이트되면 submodule”s code won”t 가 자동으로 업데이트됩니다. 코드가 하위 모듈의 최신 커밋으로 작동하지 않을 수 있으므로 unexpectedbehaviour 를 방지하므로 좋습니다.,

추가 서브모듈

추가할 수 있습 서브모듈을 저장소 like this:

기본 구성이 확인 코드의awesome_submodule.git저장을path_to_awesome_submodule디렉토리이며,정보를 추가 주소 aboutthis 서브모듈, 을 포함하는 커밋 서브모듈인하는 것이 현재 commit 의 기본 지사(일반적으로master점)이 명령은 실행됩니다.,

이 작업 후에,당신이 할 경우에는git status“당신 ll 두 파일에서Changes to be committed리스트:.gitmodules파일 및 pathto 의 서브모듈. 이러한 파일을 커밋하고 푸시 할 때 하위 모듈을 원점으로 커밋/푸시합니다.

얻기 서브모듈”의 코드

경우 새로운 서브모듈 만들에 의해 한 사람이 다른 사람들에 theteam 해야를 시작하는 이 서브모듈. 먼저 하위 모듈에 대한 정보를 가져와야합니다.이 정보는 일반git pull에 의해 검색됩니다., 새로운 하위 모듈이있는 경우”git pull의 출력에서 볼 수 있습니다. 당신은”해야를 시작으로 그들을

이 끌어 모든 코드 서브모듈 배치 디렉터리에서 그것이”의 구성됩니다.

“하위 모듈을 사용하는 저장소를 복제 한 경우이 명령을 실행하여 하위 모듈 코드를 가져와야합니다. 이것은git clone에 의해 수행되지 않습니다.

하위 모듈에서 업데이트 푸시하기

하위 모듈은 별도의 저장소 일뿐입니다., Changesto 를 만들고 싶다면이 저장소의 변경 사항을 만들어 일반 Git 저장소(thesubmodule”s 디렉토리의 git 명령 만 실행)와 같이 푸시해야합니다. 그러나 mainrepository 가”하위 모듈을 업데이트했습니다”라는 것을 알려주고 하위 모듈의 저장소의 최신 커밋을 사용하도록해야합니다. 왜냐하면 서브 모듈 내에서 새로운 커밋을 만들면 주 저장소가 이전 커밋을 가리킬 것이기 때문입니다.,

도록하려는 경우,이러한 변경 내용에서 주소,너무의 말 메인 저장소를 사용할 최신 commit 의 thesubmodule. 이제 어떻게해야합니까?

그래서 당신은”서브 모듈”의 저장소를 변경하고 그 저장소에 커밋했습니다. 는 경우 지금git status에 mainrepository,당신”것을 볼 수 있는 서브모듈 목록에Changes not staged for commit고 있는(modified content)습니다.즉,하위 모듈의 코드가 주 저장소가 가리키는 것보다 adifferent commit 에서 체크 아웃됩니다., 기본 저장소가이 새로운 커밋을 가리 키도록하십시오.git add로 변경 한 다음 커밋하고 푸시하면됩니다.

을 유지하는 당신의 하위 모듈을 그대로–날짜

경 업데이트한 서브모듈,다른 팀 구성원 updatethe 코드의 자신의 하위 모듈. 이것은 자동으로 수행하는git pull기 때문에,git pull그것은 단지 정보 검색는 서브모듈이를 가리키는 anothercommit,그러나지 않”t 업데이트 서브모듈”의 코드입니다., 하위 모듈의 코드를 업데이트하려면 다음을 실행해야합니다.

이 명령을 실행하지 않으면 어떻게됩니까?

이 명령을 실행하지 않으면 하위 모듈의 코드가 이전 커밋으로 체크 아웃됩니다. 을 할 때는git status당신이 볼 수 thesubmoduleChanges not staged for commit목록 텍스트와 함께(modified content)습니다. 이것은 당신이 thesubmodule”의 코드를 변경했기 때문에가 아니라 해당 코드가 differentcommit 으로 체크 아웃 되었기 때문입니다. 그래서 Git 은 이것을 변경으로 보지만 실제로는 하위 모듈을 업데이트하지 않았습니다., 그래서 만약 당신이”재 작업섭모듈,돈”t 는 하위 모듈을 최신 상태로 유지하는 것을 잊지 마십시오.

모든 사람이 더 쉽게 만들기

당신이 시작하고 업데이트하는 것을 잊어 버린 경우 때때로 성가시다. 다행히도,거기에 몇 가지 용이하게 할 수 있도록:

이 것입 업데이트 하위 모듈,그리고 만약 그들이”다시 시작하지 않을,아직 willinitiate 니다.하위 모듈 내부에 하위 모듈을 가질 수도 있습니다., 이 경우 당신은”llwant 업데이트/를 시작하면 하위 모듈을 재귀적으로.

이것은 많은 유형,그래서 당신이 할 수 있는 별칭:

지금할 때마다 실행git update, 그것이 실행됩니다git pullandagit submodule update --init --recursive,따라서 모두 업데이트하 있 귀하의 프로젝트입니다.


답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다