夜间批量提交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
相关产品推荐
相关产品推荐

