Git的Submodule是一个非常方便的子项目管理功能,然而在删除的时候比较容易踩坑。

解决方法主要来自 Remove Submodule

删除特定Submodule

rm .gitmodules
rm -rf path_to_submodule/
git rm --cached path_to_submodule (目录后不要添加/)
rm -rf .git/modules/<submodule name>

删除所有Submodule

git config --remove-section submodule."Complete submodule name"

Hugo博客中应用Submodule

初次部署 hugo 博客时参考官方教程。为了备份博客源码我们在 Github 的同一仓库中使用dev分支来存储源码,master 分支存储 public/ 下生成的内容。首先添加 Submodule:

git submodule add -b master git@github.com:<USERNAME>/<USERNAME>.github.io.git public

如果出现添加失败的情况,可以参考上述方法删除重新创建。

部署脚本

#!/bin/bash

echo -e "\033[0;32mDeploying updates to GitHub...\033[0m"

# Build the project.
hugo # if using a theme, replace with `hugo -t <YOURTHEME>`

# Go To Public folder
cd public
# Add changes to git.
git add .

# Commit changes.
msg="rebuilding site `date`"
if [ $# -eq 1 ]
  then msg="$1"
fi
git commit -m "$msg"

# Push source and build repos.
git push origin master

# Come Back up to the Project Root
cd ..

源码备份脚本

#!/bin/bash

echo -e "\033[0;32mBackup site to GitHub...\033[0m"

# Add changes to git.
git add .

# Commit changes.
msg="backup site `date`"
if [ $# -eq 1 ]
  then msg="$1"
fi
git commit -m "$msg"

# Push source and build repos.
git push origin dev