programing

Git 하위 모듈 푸시

javamemo 2023. 10. 7. 09:07
반응형

Git 하위 모듈 푸시

서브모듈을 수정하면 커밋을 서브모듈 원점으로 다시 돌릴 수 있습니까, 아니면 클론이 필요합니까?클론인 경우 다른 저장소에 클론을 저장할 수 있습니까?

서브모듈은 일부 추가 메타데이터(gitlink tree entry, .gitmodules 파일)를 가진 다른 레포 내의 gitrepo의 클론에 불과합니다.

$ cd your_submodule
$ git checkout master
<hack,edit>
$ git commit -a -m "commit in submodule"
$ git push
$ cd ..
$ git add your_submodule
$ git commit -m "Updated submodule"

git1.7.11 ([ANNOUNCE] Git 1.7.11.rc1릴리스 노트, 2012년 6월) 이후로 다음과 같이 언급하고 있습니다.

"git push --recurse-submodules된 하위 을 배웠습니다.".

아마도 이 패치와 옵션 이후에 완료된 것 같습니다.

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

푸시할 수정사항에 의해 사용되는 모든 하위 모듈 커밋이 원격 추적 분기에서 사용 가능한지 확인합니다.

  • 한다면check가 사용되며, 푸시될 수정사항에서 변경된 모든 서브모듈 커밋을 원격에서 사용할 수 있는지 확인합니다.
    그렇지 않으면 푸시가 중단되고 0이 아닌 상태로 종료됩니다.
  • 한다면on-demand가 사용되며, 푸시될 리비전에서 변경된 모든 하위 모듈이 푸시됩니다.
    온디맨드에서 필요한 모든 수정사항을 푸시할 수 없는 경우에도 중단되고 0이 아닌 상태로 종료됩니다.

따라서 (부모 레포에서) 모든 것을 한 번에 푸시할 수 있었습니다.

git push --recurse-submodules=on-demand

이 옵션은 한 수준의 중첩에만 적용됩니다.다른 서브모듈 내부의 서브모듈에 대한 변경사항은 푸시되지 않습니다.


git 2.7(2016년 1월)로, 간단한 git push만으로도 부모 레포를 밀어내기에 충분할 것입니다.모든 서브모듈을 포함합니다.

Mike Crow()의 commit d34141c, commit f5c7cd9(2015년 12월 3일), commit f5c7cd9(2015년 12월 3일), commit b33a15b(2015년 11월 17일)를 참조하십시오.mikecrowe
(2015년 12월 21일 주니오 C 하마노 ---- 커밋 5d35d72에 합병됨)

push: 보탠다recurseSubmodules

--recurse-submodules명령줄 매개 변수가 얼마 전부터 있었지만 구성 파일과 동등한 매개 변수가 없습니다.

에 .git fetch push.recurseSubmodules이 파라미터에 대한 기본값을 제공합니다.
를 위해서는다도 .--recurse-submodules=no필요한 경우 명령줄에서 구성을 재정의할 수 있도록 허용합니다.

은 를 .push코드를 사용하다submodule-configfetch.

이제 문서에는 다음이 포함됩니다.

push.recurseSubmodules:

푸시할 수정사항에 의해 사용되는 모든 하위 모듈 커밋이 원격 추적 분기에서 사용 가능한지 확인합니다.

  • 이 '이'인check합니다.', Git 는합니다.커밋이 누락된 경우 푸시가 중단되고 0이 아닌 상태로 종료됩니다.
  • 이 '이'인on-demand된 모든 .온디맨드에서 필요한 모든 수정사항을 푸시할 수 없는 경우에도 중단되고 0이 아닌 상태로 종료됩니다.
  • 이 '이'인no 푸시 시 됩니다.

시 ' (를) 를 하여 이 할 수 .--recurse-submodules=check|on-demand|no'.

그래서:

git config push.recurseSubmodules on-demand
git push

Git 2.12 (2017년 1분기)

git push --dry-run --recurse-submodules=on-demand실제로 효과가 있을 겁니다.

Brandon Williams()mbrandonw의 커밋 0301c82, 커밋 1aa7365 (2016년 11월 17일) 참조.
(2016년 12월 16일 주니오 C 하마노 ---- 커밋 12cf113에 합병)

push run with --dry-run푸시가 주문형으로 하위 모듈을 푸시하도록 구성된 경우 실제로(Git 2.11 2016년 12월 이하/이전) 드라이 런을 수행하지 않습니다.
대신 푸시해야 하는 모든 하위 모듈은 실제로 원격으로 푸시되지만 슈퍼 프로젝트에 대한 업데이트는 드라이 런으로 수행됩니다.
이것은 버그이며 드라이런의 의도된 행동이 아닙니다.

가르치다push존경하다, 존경하다, 존경하다, 존경하다, 존경하다, 존중하다, 존경.--dry-run하위 모듈 '주문형'을 재귀적으로 푸시하도록 구성된 경우 옵션.
이 작업은 다음을 통과하여 수행됩니다.--dry-runDry-run을 수행할 때 하위 모듈에 대한 푸시를 수행하는 하위 프로세스에 플래그를 지정합니다.


그리고 에는 " Git 2.12 가 --recurse-submodules=only" 최상위 슈퍼 프로젝트를 밀어내지 않고 하위 모듈을 밀어내는 옵션.

Brandon Williams()mbrandonw커밋 225e8bf, 커밋 6c656c3, 커밋 14c01bd(2016년 12월 19일)를 참조하십시오.
(2017년 1월 31일 주니오 C 하마노 ---- 커밋 792e22e에 합병)


Git 2.36 (2022년 2분기)에서 ""는 git fetch --negotiate-only(man)우리 역사의 어떤 부분이 다른 쪽에서 누락되어 있는지 파악하기 위해 에 의해 사용되는 내부 명령어입니다.
다 시에도 하지 않아야 .fetch.recursesubmodules다를 .gc".
코드는 일반적인 조상을 발견할 뿐 다른 것은 하지 않도록 강화되었습니다.

글렌 추()chooglen의 커밋 386c076, 커밋 135a12b, 커밋 bec587d(2022년 1월 18일) 참조.
주니오 C 하마노커밋 드포에 (2022년 1월 20일)gitster 참조.
(주니오 C 하마노 ---- 커밋 472a219, 2022년 2월 9일 합병)

fetch --negotiate-only하위 모듈 fetch --negotiate-only업데이트 안 함

사인 오프: 글렌 추

git fetch --negotiate-only(man) 은 푸시 협상의 구현 세부사항이며 대부분의 호출과는 달리 실제로 주 저장소를 업데이트하지 않습니다.
따라서 하위 모듈 재귀가 활성화된 경우에도 하위 모듈을 업데이트해서는 안 됩니다.

이것은 단지 느릴 뿐만 아니라 "과의 협상을 밀어붙이는 것과 같은 잘못된 것입니다.submodule.recurse=true됩니다를(를) 호출하므로 됩니다.git fetch --negotiate-only.

합니다인 경우 하여 이 합니다.--negotiate-only주어진.
에가 요.--negotiate-only그리고.--recurse-submodules호환되지 않습니다. 이 잘못된 조합을 확인하고 다이하십시오.

fetch-options이제페이지에 포함됩니다.

(와) .--recurse-submodules=[yes|on-demand].


를 사용하여 'Git 2.39(2022년 4 를을)' 로 으로 푸쉬합니다.--recurse-submodules=on-demand'.

조나단 탄()의 커밋 jhowtane62f779 (2022년 11월 14일) 참조.
(주니오 C 하마노 ---- 2022년 11월 23일 173fc54 커밋)

DocDoc서류를push.recurseSubmodules=only

사인 오프: 조나단 탄
사인 오프 바이:테일러 블라우

가 Git 는를 서브 것을 .--recurse-submodules=only6c656c3(")을 통해submodules: 보탠다RECURSE_SUBMODULES_ONLYvalue, 2016-12-20, Git v2.12.0-rc0 -- 배치 #8)225e8bf에 나열된 병합(")push: 하위 모듈만 푸시하는 옵션 추가", 2016-12-20, Git v2.12.0-rc0 -- batch #8에 나열된 병합).
이 기능을 정기적으로 사용하는 사용자의 경우 동등한 구성을 가지는 것이 좋습니다.

보니 이(push.recurseSubmodules=only는) (는) 에 언급되지 이미 됩니다.--recurse-submodules=onlyfeature되었습니다를 구문 하는 데 )--recurse-submodules을(를한 기능이됩니다를(를) 구문 하는 데 됩니다.push.recurseSubmodules
남은 것은 문서화하고 테스트하는 것인데, 이것이 이 약속이 하는 일입니다.

가 할 때 이 있을 수 .push.recurseSubmodules=only구성: 저장소에 하위 모듈만 푸시되고 자체는 푸시되지 않는 경우 수퍼 프로젝트는 결코 푸시될 수 없기 때문입니다.
을"합니다"으로on-demand합니다."라고 합니다합니다.

경고 메시지:

recursing into submodule with push.recurseSubmodules=only; using on-demand instead

git config이제페이지에 포함됩니다.

"체크"일 수 있습니다.on-demand", "only", 또는 "no"", "으로"와 같은 .push --recurse-submodules".

git push이제페이지에 포함됩니다.

'''(를)''' 시on-demand' 아니면 'only에 ", 에"가 push.recurseSubmodules={on-demand,only}" 또는 "submodule.recurse합니다.", 합니다.이 에는",only는 "로됩니다"로됩니다.on-demand".

git의 각 명령어를 사용할 수 있습니다.

bash 명령 예제:

git submodule foreach "git add . && git commit -m 'update' && git push"

언급URL : https://stackoverflow.com/questions/5814319/git-submodule-push

반응형