通过使用git add -A
and git commit -a
,我显然可以添加/提交对我当前所在的仓库的所有更改。但是,有没有办法将所有子模块包含在添加/提交中并将相同的提交消息应用于每个?
问问题
551 次
2 回答
6
您可以使用别名。制作脚本:例如~/supercommit.sh
#!/bin/bash -e
if [ -z $1 ]; then
echo "You need to provide a commit message"
exit
fi
git submodule foreach git add -A .
git submodule foreach git commit -am "$1"
git add -A .
git commit -am "$1"
并将其标记为可执行(chmod +x
)。现在,创建一个别名:
git config alias.supercommit '!~/supercommit.sh "$@"; #'
那应该可以(我会稍微测试一下)
于 2012-12-07T20:59:12.690 回答
1
好吧,这是 9 年前提出并回答的,今天我在寻找同样的东西时它对我有帮助。但是,我在让它工作时遇到了一些问题,所以我发布这个是为了帮助其他可能面临同样问题的人。
问题 :
- 因“第 2 行:[:参数太多”而失败
- 如果任何子模块没有更改,则失败
修复:
- 在第 2 行的 $1 周围添加引号 ("),否则包含多个单词的注释将被视为多个参数
- 在提交之前检查子模块是否已暂存更改
更新代码
#!/bin/bash -e
if [ -z "$1" ]; then
echo "You need to provide a commit message"
exit
fi
git submodule foreach "
git add -A .
git update-index --refresh
commits=\$(git diff-index HEAD)
if [ ! -z \"\$commits\" ]; then
git commit -am \"$1\"
fi"
git add -A .
git commit -am "$1"
于 2021-12-15T01:11:11.703 回答