Git子模块使用

使用场景

我的blog是使用的hugo创建,其中的主题,我是直接网上找的。这个主题本身也是一个gh上的项目。我如何直接用git同时管理我们的Blog 和 这个blog设定的主题呢???

这里就是针对git仓库下的某个类库文件也作为一个git仓库进行管理的技术,submodule,git的子模块。 项目的组件化结合pod应该也可以使用这个技术。

submodule的添加

在项目的主目录操作 > git submodule add git@github.com:jjz/pod-library.git pod-library

可以查看仓库的状态

git status

 On branch master
    Changes to be committed:
    
        new file:   .gitmodules
        new file:   pod-library

在隐藏文件.gitmodules 中,你可以看到

[submodule "pod-library"]
        path = pod-library
        url = git@github.com:jjz/pod-library.git

还有一种添加方法:

git add .gitmodules pod-ibrary
git commit -m "pod-library submodule"
git submodule init

删除

git rm –cached assets rm -rf assets git rm -r assets (添加目录作为子模块)

vim .gitmodules
vim .git/config
rm -rf .git/modules/

最后提交修改就好了。

修改

cd pod-library

在这个文件夹下面进行相应的 add,commit,push等等操作,这就是对子模块的修改添加到对应的子模块仓库了。然后主模块,你会发现就发生了相应的修改,需要你推送。

更新

在父目录 > git submodule foreach git pull

在子目录 >cd pod-library >git pull

clone项目和子模块

  1. 采用递归clone整个项目 > git clone git@github.com:jjz/pod-project.git –recursive

  2. 父项目先clone,然后进入子模块 > cd pod-project > git submodule init > git submodule update