728x90
반응형
질문 : Git 하위 모듈을 오리진의 최신 커밋으로 업데이트
Git 하위 모듈이있는 프로젝트가 있습니다. 그것은 ssh : // ... URL에서 왔고 커밋 A에 있습니다. 커밋 B가 해당 URL로 푸시되었으며 서브 모듈이 커밋을 검색하고 변경하기를 원합니다.
자, 내 이해는 git submodule update
가 이것을해야하지만 그렇지 않다는 것입니다. 아무것도하지 않습니다 (출력 없음, 성공 종료 코드). 예를 들면 다음과 같습니다.
$ mkdir foo
$ cd foo
$ git init .
Initialized empty Git repository in /.../foo/.git/
$ git submodule add ssh://user@host/git/mod mod
Cloning into mod...
user@host's password: hunter2
remote: Counting objects: 131, done.
remote: Compressing objects: 100% (115/115), done.
remote: Total 131 (delta 54), reused 0 (delta 0)
Receiving objects: 100% (131/131), 16.16 KiB, done.
Resolving deltas: 100% (54/54), done.
$ git commit -m "Hello world."
[master (root-commit) 565b235] Hello world.
2 files changed, 4 insertions(+), 0 deletions(-)
create mode 100644 .gitmodules
create mode 160000 mod
# At this point, ssh://user@host/git/mod changes; submodule needs to change too.
$ git submodule init
Submodule 'mod' (ssh://user@host/git/mod) registered for path 'mod'
$ git submodule update
$ git submodule sync
Synchronizing submodule url for 'mod'
$ git submodule update
$ man git-submodule
$ git submodule update --rebase
$ git submodule update
$ echo $?
0
$ git status
# On branch master
nothing to commit (working directory clean)
$ git submodule update mod
$ ...
나는 또한 git fetch mod
시도했지만 (비밀번호를 요구하지 않기 때문에 가능하지 않습니다!) git log
와 git show
는 새로운 커밋의 존재를 거부합니다. 지금까지 rm
-ing하고 다시 추가했지만 이것은 원칙적으로 잘못되었고 실제로는 지루합니다.
반응형
답변
git submodule update
명령은 실제로 하위 모듈이 수퍼 프로젝트의 색인에 이미 지정된 커밋을 체크 아웃하기를 원한다고 Git에 알립니다. 원격에서 사용할 수있는 최신 커밋으로 하위 모듈을 업데이트하려면 하위 모듈에서 직접 수행해야합니다.
요약하자면 :
# Get the submodule initially
git submodule add ssh://bla submodule_dir
git submodule init
# Time passes, submodule upstream is updated
# and you now want to update
# Change to the submodule directory
cd submodule_dir
# Checkout desired branch
git checkout master
# Update
git pull
# Get back to your project root
cd ..
# Now the submodules are in the state you want, so
git commit -am "Pulled down update to submodule_dir"
또는 바쁜 사람이라면 :
git submodule foreach git pull origin master
출처 : https://stackoverflow.com/questions/5828324/update-git-submodule-to-latest-commit-on-origin
728x90
반응형
'개발관련 > Git' 카테고리의 다른 글
Windows에서 Git과 함께 작동하도록 편집기를 설정하는 방법 (0) | 2021.07.28 |
---|---|
Windows 용 Git에서 파일 이름이 너무 깁니다. (0) | 2021.07.28 |
[오류] git: undo all working dir changes including new files (0) | 2021.07.27 |
Git 브랜치를 로컬 및 원격으로 삭제하는 방법 (0) | 2021.07.23 |
git reset --hard에서 커밋되지 않은 변경 사항을 복구하는 방법 (0) | 2021.07.23 |