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
A가 가져 할 나타나는, (그러나 수 없습니다 아마도,이 암호를 묻지 아니니까!)하지만, git log
및 git show
새로운 커밋의 존재를 부정한다. 지금까지 나는 방금 rm
모듈을 다듬고 다시 추가했지만, 이것은 원칙적으로 잘못되고 실제로 지루합니다.
--remote
이 시점에서 새로운 것이 확실히 더 나은 솔루션이며,이 질문은 Github Gist와 하위 모듈에 관한 것이므로 들어오는 독자가 새로운 답변을 보는 것이 더 나을 것이라고 생각합니다.
hunter2
암호 : O)
--remote
옵션 을 통해 필요한 기능이 내장되어 있으므로 Jason의 답변에서 "손으로"접근하는 대신 승인 된 답변으로 표시하는 것이 좋을까요?