IT story

자식 서브 모듈에서 변경 사항을 "커밋"하는 방법은 무엇입니까?

hot-time 2020. 4. 13. 08:19
반응형

자식 서브 모듈에서 변경 사항을 "커밋"하는 방법은 무엇입니까? [복제]


이 질문에는 이미 답변이 있습니다.

나는 순진하게 git 서브 모듈을 설정하고 그것을 Subversion 외부처럼 취급했습니다. 즉, 지금 막 깨달은 변경 사항으로 인해 커밋되거나 푸시되지 않았습니다.

하위 모듈 변경 사항을 다시 업스트림 저장소로 커밋 / 푸시하는 쉬운 방법이 있습니까? 이런 방식으로 별도의 (하지만 연결된) 리포지토리에서 동시 개발을 수행하기 위해 Git에서 권장되는 기술은 무엇입니까?


서브 모듈은 자체이다 의 repo / 작업 영역 자체와, .git디렉토리.

그래서 먼저 commit/push당신의 서브 모듈의 변경 :

$ cd path/to/submodule
$ git add <stuff>
$ git commit -m "comment"
$ git push

그런 다음 기본 프로젝트 를 업데이트하여 서브 모듈 의 업데이트 된 버전을 추적하십시오 .

$ cd /main/project
$ git add path/to/submodule
$ git commit -m "updated my submodule"
$ git push

참고 다양한 서브 모듈의 변경의 무리를 저지른 경우, 당신은 (또는에 곧 수있을 것입니다) 수 한 번에 푸시 다 (즉, 하나의 와 함께, 부모의 repo에서 푸시) :

git push --recurse-submodules=on-demand

git1.7.11 ( [ANNOUNCE] Git 1.7.11.rc1 )은 다음과 같습니다.

" git push --recurse-submodules"선택적으로 수퍼 프로젝트에 바인딩 된 서브 모듈의 히스토리를 살펴보고 밀어내는 법을 배웠다.

이 패치--on-demand옵션 후에 수행 될 수 있습니다.

--recurse-submodules=<check|on-demand|no>::

푸시 할 개정에 사용 된 모든 서브 모듈 커밋이 원격 추적 브랜치에서 사용 가능한지 확인하십시오.

  • check를 사용 하면 푸시 할 개정에서 변경된 모든 서브 모듈 커밋이 원격에서 사용 가능한지 점검됩니다.
    그렇지 않으면 푸시가 중단되고 0이 아닌 상태로 종료됩니다.
  • on-demand를 사용 하면 푸시 할 개정에서 변경된 모든 서브 모듈이 푸시됩니다.
    요청시 필요한 모든 수정 사항을 푸시 할 수없는 경우 중단되고 0이 아닌 상태로 종료됩니다.

이 옵션은 한 수준의 중첩에서만 작동합니다. 다른 하위 모듈 내부의 하위 모듈에 대한 변경 사항은 적용되지 않습니다.


$ git submodule status --recursive

이 상황에서 생명의 은인이기도합니다. 그것을 사용하고 gitk --allsha1을 추적하고 하위 모듈이 자신의 생각을 가리키고 있는지 확인할 수 있습니다.


서브 모듈을 일반 저장소와 똑같이 취급 할 수 있습니다. 변경 사항을 업스트림으로 전파하려면 일반적으로 해당 디렉토리 내에서와 같이 커밋하고 푸시하십시오.


커밋하고 푸시하기 전에 하위 모듈에 대한 작업 저장소 트리를 초기화해야합니다. 나는 거북이를 사용하고 있으며 다음과 같은 일을합니다.

먼저 디렉토리가 아닌 .git 파일이 있는지 확인하십시오.

  • 그러한 파일이 있으면 수퍼 모듈 git 디렉토리의 경로를 포함합니다
  • 이 파일을 삭제
  • 자식을 시작
  • 하위 모듈에 사용되는 원격 경로를 추가하십시오.
  • 아래 지침을 따르십시오

.git 파일이 있으면 로컬 트리를 추적하는 .git 디렉토리가있을 것입니다. 여전히 브랜치 (하나를 만들 수 있음) 또는 마스터 (때로는 작동하지 않음)로 전환해야합니다. 가장 좋은 방법은 git fetch-git pull입니다. 가져 오기를 생략하지 마십시오.

이제 커밋과 풀이 오리진 / 마스터와 동기화됩니다

참고 URL : https://stackoverflow.com/questions/5542910/how-do-i-commit-changes-in-a-git-submodule

반응형