什么" - 远程"实际上在" git子模块更新--remote"?

时间:2017-11-24 09:36:41

标签: git git-submodules

我只是不明白Git的帮助页面。那么发生了什么或者有什么区别?

假设我有一个包含子模块的Git项目B.子模块B确实有一个子模块C.克隆存储库后,A指向B的特定提交.B指向C的特定提交。

如果我在A里面,我会去

cd B

现在我输入

git submodule update --remote

git submodule update

有什么区别?假设远程服务器确实在A,B和C中有变化。

使用" git submodule update --remote"保留对C的特定版本的引用。使用它而没有--remote更新到最新版本的C吗?

1 个答案:

答案 0 :(得分:3)

假设B是A的唯一子模块。

cd A
git ls-tree -r HEAD | grep commit

输出类似于

160000 commit 0814c6ba8f45829f04709c56118868d2483444c2 foo

foo是子模块文件夹,0814c6ba8f45829f04709c56118868d2483444c2是A当前提交跟踪的修订版。

git submodule update执行类似

的操作
cd B
git checkout 0814c6ba8f45829f04709c56118868d2483444c2

git submodule update --remote就像

cd B
git fetch origin master
git checkout origin/master

默认使用masterorigin/master。如果submodule.foo.branch = bar中的.gitmodule指定了分支,则会使用barorigin/bar