我只是不明白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吗?
答案 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
默认使用master
和origin/master
。如果submodule.foo.branch = bar
中的.gitmodule
指定了分支,则会使用bar
和origin/bar
。