由于平时工作中项目较多,每天刚上班都需要更新一下项目代码,一个一个更新感觉稍微麻烦了一些,所以写了一个简单的shell脚本,每天到公司先执行一遍即可。
#!/bin/bash# 进入指定的目录
target_dir="$1";
cd "$target_dir";
echo "当前工作目录:$target_dir";
# 列出所有目录
echo "========================== 待更新目录 ==========================";
ls -l;
echo -e "\n"## 所有目录名称push进数组# 循环索引
c=0;
for file in `ls`
dofilelist[$c]=$filec=`expr $c + 1`
done## 遍历数组并执行git命令# 计数
num=0;
for i in ${filelist[@]};
do {# 更新目录git_dir="$target_dir/$i"cd "$git_dir"if [[ -e ".git" ]]; then# 执行 git pull 命令echo -e "\n"echo "开始更新 $git_dir 项目..."git pullecho "$git_dir 项目更新完成"num=`expr $num + 1`echo -e "\n"elseecho "$i 不是 git 目录";echo -e "\n"fi
}
done# 获取数组总长度
length=${#filelist[@]}
echo -e "\n"
echo "该目录下文件(夹)总数:$length"
echo -e "\n"
echo "========================== 本次共更新了 $num 个 Git项目 =========================="
思路很简单,输入想要更新的父目录,ls列出当前目录下所有文件夹,挨个遍历其中的每个文件夹,如果文件夹内包含.git文件,认为该文件夹是个git目录,然后执行git pull命令更新。
使用方式
sh gittask.sh “/workspace”
./gittask.sh “/workspace”
如果当前目录是想要更新的父目录,则可以
pwd | xargs sh gittask.sh
使用效果如下