You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

夜间批量提交20+Git仓库的Linux脚本需自动生成提交信息

解决Git备份脚本需要手动输入提交信息的问题

针对你这种单开发者、夜间批量备份Git仓库的临时场景,最直接的解决办法就是给git commit命令加上-m参数,直接指定提交信息,不用再手动输入。同时我们还可以优化脚本,让它更简洁易维护——毕竟你有20多个仓库呢!

1. 基础修改:给commit添加固定提交信息

把你原来的git commit改成带-m的形式,比如用统一的备份描述,还可以加上时间戳方便区分不同备份:

cd /asdf/code/My-Parent
git add *
git commit -m "Nightly backup - $(date '+%Y-%m-%d %H:%M:%S')"
git push
cd ../My-Parent-Core
git add *
git commit -m "Nightly backup - $(date '+%Y-%m-%d %H:%M:%S')"
git push

$(date '+%Y-%m-%d %H:%M:%S')会自动生成当前时间,这样每次备份的提交信息都带具体时间,后续查找历史备份时更清晰。

2. 进阶优化:用循环批量处理所有仓库

手动写20多次重复命令太繁琐,我们可以用Shell循环简化脚本,把所有仓库路径放到数组里,一次性处理所有仓库:

# 把所有需要备份的仓库路径列在这里,一行一个
REPOS=(
    "/asdf/code/My-Parent"
    "/asdf/code/My-Parent-Core"
    # 继续添加你的其他仓库路径...
)

# 遍历每个仓库执行备份操作
for REPO in "${REPOS[@]}"; do
    echo "开始备份仓库: $REPO"
    # 如果切换目录失败,直接跳过当前仓库,避免脚本中断
    cd "$REPO" || continue
    # 用git add .代替git add *,能捕获所有子目录的变更(覆盖范围更全面)
    git add .
    # 带时间戳的提交信息
    git commit -m "Nightly backup commit - $(date '+%Y-%m-%d %H:%M:%S')"
    # 推送到远程仓库
    git push
done

额外实用小贴士:

  • 如果你的仓库需要输入密码才能推送,可以设置Git凭据缓存,避免每次手动输入:

    git config --global credential.helper store
    

    执行一次后,Git会记住你的凭据,后续脚本就能自动完成推送操作。

  • 如果你想备份所有文件(包括.gitignore里忽略的文件),可以把git add .改成git add -A,这样会把所有变更(包括删除操作、被忽略的文件)都加入暂存区。

这样修改后,你的脚本就能完全自动执行,睡前运行一次就搞定所有仓库的备份啦!

内容的提问来源于stack exchange,提问作者mmaceachran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:45:57