git submodule update --remote与--init的区别
关于submodule#
1、我为什么会用#
因为我在使用hugo搭建博客时,在网上找了一个主题codex
就是使用的这种方式,我的博客项目仓库指定了他的主题仓库(此时对我来说他的主题相当于一个第三方依赖)。
2、为什么fork到自己的仓库#
因为我想修改主题中的一些配置,只能fork过来进行自定义,此时我fork过来之后,相当于我可以任意修改这个主题,那我为什么不直接把源代码放到我的博客仓库中呢?因为我不知道可以这么干,我是今天才知道…是在查阅git submodule update --remote
与git submodule update --init
这两条命令的区别的时候才知道。
3、remote与init的区别#
在更新第三方依赖的时候,有以上两条命令可以选择,区别在于:
- remote会根据
.gitmodules
文件中的信息进行更新,会更新到submodule的最新提交; - 使用init时,会根据主仓库下submodule的某个特定提交(哈希值),从submodule的远程仓库中拉取这个特定提交。同时,
git submodule update --init
可以看作git submodule init
和git submodule update
的结合,前者是初始化子模块,后者是根据当前主仓库的某个提交拉取远程仓库的代码。
总的来说,init与remote两条命令,init命令更侧重于初始化,remote侧重于拉取最新提交。
init通常用于第一次克隆一个包含子模块的仓库时,子模块的内容并不会自动被克隆下来,此时需要执行init这条命令。 remote通常用于跟踪某个第三方依赖,使对其的调用保持最新。