我有一个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 modCloning into mod...user@host's password: hunter2remote: 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 initSubmodule 'mod' (ssh://user@host/git/mod) registered for path 'mod'$ git submodule update$ git submodule syncSynchronizing submodule url for 'mod'$ git submodule update$ man git-submodule $ git submodule update --rebase$ git submodule update$ echo $?0$ git status# On branch mastenothing to commit (working directory clean)$ git submodule update mod$ ...我也试过git fetch mod,这似乎做取(但不能可能,因为它不要求输入密码!),但git log并git show否认新提交的存在。到目前为止,我只是rm在模块中重新添加模块,但在实践中这在原理上和错误上都是错误的。
相似问题