跳转至

如何批量拉取 Git 仓库更新

仓库一多,逐个手动拉取就会变得很麻烦。使用本文的方法,可以对 Git 仓库进行批量拉取操作。

步骤

  1. 新建脚本文件 pull-master.sh,并将以下代码粘贴进去:
pull-master.sh
#!/bin/bash

function showMsg()
 {
   echo -e "\033[32m$1\033[0m"
 }

function getdir(){
    for element in `ls $1`
    do
        dir_or_file=$1"/"$element
        if [ -d $dir_or_file ]
        then
            cd $1"/"$element
            showMsg 'git pull '$element
            git pull
        else
            echo $dir_or_file
        fi
    done
}
root_dir="【包含多个仓库的路径】"
getdir $root_dir
  1. 【包含多个仓库的路径】 替换为你的路径,例如 C:\repos
  2. 运行命令:
sh pull-master.sh
./pull-master.sh

或直接双击 pull-master.sh 运行

定时执行

  1. 搜索并打开 任务计划程序
  2. 点击 创建任务
    1. 常规 标签页内填写名称
    2. 触发器 标签页内设置周期
    3. 操作 标签页内新建操作,填写 程序或脚本(例如 F:\pull-master.sh),添加参数(例如 pull-master.sh),起始于(例如 F:\
  3. 测试运行,如果没问题即可。(如不成功可参考 Pull-Git-Repo.xml

在群晖 NAS 上部署

  1. 将脚本(比如我是 github-pull.sh)放在 NAS 上任意路径
  2. 修改 github-pull.shroot_dir 的路径,比如我改为 "/volume1/projects",也就是你放 Git 仓库的地方
  3. 控制面板 - 任务计划 - 新增 - 计划的任务 - 用户定义的脚本,在 计划任务设置 标签页配置周期运行时间,和运行脚本的命令(比如 bash /volume1/stash/permanent/github-pull.sh
  4. 可在 设置 内配置输出结果,后选择任务,点击 运行,可测试运行,可打开配置的输出路径看运行结果

如果每次都需要输入密码,可以输入以下命令(需提前开启用户家目录):

git config –global credential.helper store

这会在本地生成一个文本,上边记录账号和密码。
接下来遇到要输入密码时,只需再输入一次,以后就不用重新输入了。

参考与致谢