首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将Git子模块更新为最新的原始提交?

如何将Git子模块更新为最新的原始提交?

提问于 2017-12-18 10:44:34
回答 2关注 0查看 3.3K

我有一个Git子模块的项目。它来自于ssh:// ... URL,并且在提交A上。提交B已被推送到该URL,并且我希望子模块检索提交,并更改为该提交。

现在,我的理解是git submodule update应该做到这一点,但事实并非如此。它不做任何事情(没有输出,成功退出代码)。这是一个例子:

代码语言:txt
复制
代码语言:txt
复制
$ mkdir foo
代码语言:txt
复制
$ cd foo
代码语言:txt
复制
$ git init .
代码语言:txt
复制
Initialized empty Git repository in /.../foo/.git/
代码语言:txt
复制
$ git submodule add ssh://user@host/git/mod mod
代码语言:txt
复制
Cloning into mod...
代码语言:txt
复制
user@host's password: hunter2
代码语言:txt
复制
remote: Counting objects: 131, done.
代码语言:txt
复制
remote: Compressing objects: 100% (115/115), done.
代码语言:txt
复制
remote: Total 131 (delta 54), reused 0 (delta 0)
代码语言:txt
复制
Receiving objects: 100% (131/131), 16.16 KiB, done.
代码语言:txt
复制
Resolving deltas: 100% (54/54), done.
代码语言:txt
复制
$ git commit -m "Hello world."
代码语言:txt
复制
[master (root-commit) 565b235] Hello world.
代码语言:txt
复制
 2 files changed, 4 insertions(+), 0 deletions(-)
代码语言:txt
复制
 create mode 100644 .gitmodules
代码语言:txt
复制
 create mode 160000 mod
代码语言:txt
复制
# At this point, ssh://user@host/git/mod changes; submodule needs to change too.
代码语言:txt
复制
$ git submodule init
代码语言:txt
复制
Submodule 'mod' (ssh://user@host/git/mod) registered for path 'mod'
代码语言:txt
复制
$ git submodule update
代码语言:txt
复制
$ git submodule sync
代码语言:txt
复制
Synchronizing submodule url for 'mod'
代码语言:txt
复制
$ git submodule update
代码语言:txt
复制
$ man git-submodule 
代码语言:txt
复制
$ git submodule update --rebase
代码语言:txt
复制
$ git submodule update
代码语言:txt
复制
$ echo $?
代码语言:txt
复制
0
代码语言:txt
复制
$ git status
代码语言:txt
复制
# On branch maste
代码语言:txt
复制
nothing to commit (working directory clean)
代码语言:txt
复制
$ git submodule update mod
代码语言:txt
复制
$ ...

我也试过git fetch mod,这似乎做取(但不能可能,因为它不要求输入密码!),但git log并git show否认新提交的存在。到目前为止,我只是rm在模块中重新添加模块,但在实践中这在原理上和错误上都是错误的。

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档