git - 递归推送所有子模块

标签 git git-submodules

我编写了以下脚本来推送工作区中的所有更改,包括子模块和 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/

相关文章:

linux - GitHub SSH 访问无效

git - 显示 SmartGit 中哪些文件已更改

具有单独工作树的 Git 子模块

Git子模块更新被覆盖

GIT 错误 : fatal:/usr/libexec/git-core/git-submodule cannot be used without a working tree

git - 如何在 Openshift 上更改 postgresql.conf 默认值

git - 如何从Git导入Android Studio项目?

git - Android - 使用 git 子模块的最佳方式

git - 如何使 git 存储库中的现有目录成为 git 子模块

git - 如何更改 git 子模块的 HEAD