我编写了以下脚本来推送工作区中的所有更改,包括子模块和 super 项目。然而,这听起来有点奇怪,做我想做的事情是如此复杂。有没有更好的方法,我想念的?
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Illegal number of parameters"
exit
fi
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "${SCRIPT_DIR}/../submodule1"
git status
git add -A
git commit -m "$1"
git push origin master
cd "${SCRIPT_DIR}/../submodule2"
git status
git add -A
git commit -m "$1"
git push origin master
cd "${SCRIPT_DIR}/../submodule3"
git status
git add -A
git commit -m "$1"
git push origin master
printf "\n\nUpdating Super Project\n\n"
cd ..
git status
git add -A
git commit -m "All Submodules Updated - $1"
git push origin master
最佳答案
您可以使用 git submodule foreach
在每个子模块上运行任何所需的命令,例如
git submodule foreach git push origin master
参见:man git-submodule
.
关于git - 递归推送所有子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24694509/