IT

Git 업데이트 하위 모듈 재귀

itgroup 2023. 5. 23. 21:48
반응형

Git 업데이트 하위 모듈 재귀

나의 프로젝트 구조

ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)

하위 모듈을 재귀적으로 업데이트하려면 어떻게 해야 합니까?나는 이미 몇 가지 git 명령을 시도했습니다(ProjectA 루트).

git submodule foreach git pull origin master

또는

git submodule foreach --recursive git pull origin master

하지만 Twig의 파일을 가져올 수 없습니다.

git submodule update --recursive

초기화되지 않은 하위 모듈을 초기화하는 --init 옵션을 사용할 수도 있습니다.

git submodule update --init --recursive

참고: Git의 일부 이전 버전에서는 다음을 사용할 경우--init이미 초기화된 하위 모듈은 업데이트할 수 없습니다.이 경우 다음 명령을 사용하지 않고 실행해야 합니다.--init선택.

사용 방법:

git submodule update --init --recursive
git submodule foreach --recursive git fetch
git submodule foreach git merge origin master

서브모듈의 기본 분기는 다음과 같을 수 있습니다. master(이 경우에는 자주 발생합니다.) 다음과 같이 전체 Git 하위 모듈 업그레이드를 자동화합니다.

git submodule init
git submodule update
git submodule foreach 'git fetch origin; git checkout $(git rev-parse --abbrev-ref HEAD); git reset --hard origin/$(git rev-parse --abbrev-ref HEAD); git submodule update --recursive; git clean -dfx'

최근 Git(v2.15.1 사용)에서 업스트림 서브모듈 변경사항을 서브모듈로 재귀적으로 병합합니다.

git submodule update --recursive --remote --merge

추가할 수 있습니다.--init초기화되지 않은 하위 모듈을 초기화하고 사용합니다.--rebase병합 대신 기본값을 다시 지정하려는 경우.

나중에 변경 사항을 커밋해야 합니다.

git add . && git commit -m 'Update submodules to latest revisions'

어때.

git config --global submodule.sysse true

잊어버리라고요?

다음을 추가할 수 있습니다.Makefile:

submodule:
    git submodule update --init --recursive
    git submodule foreach 'git fetch origin; git checkout $$(git rev-parse --abbrev-ref HEAD); git reset --hard origin/$$(git rev-parse --abbrev-ref HEAD); git submodule update --recursive; git clean -dfx'

그러면 간단하게 실행할 수 있습니다.make submodule하위 모듈을 업데이트할 때마다 선택합니다.

서브모듈 하나로 인해 문제가 발생했습니다('치명적: .Sanandrea가 위에서 보고한 것).하위 모듈로 이동하여 'git clean -dfx'를 사용하여 해결했습니다.

언급URL : https://stackoverflow.com/questions/10168449/git-update-submodules-recursively

반응형