需求
有一些github上的项目,学习使用时拉取的master,过了一段时间,想更新到最新,需要一个一个目录进去执行git pull。
当目录比较多时,或者需要经常同步更新时,就比较繁索。
写个小脚本,分分钟搞定它吧!
shell脚本
我平时在Linux上开发,于是shell脚本是第一选择。
其实在windows上,使用git bash也是一样。
废话不说,代码如下:
#!/bin/bash
function showGreen(){
echo -e "\033[32m $1 \033[0m"
}
function showBlue(){
echo -e "\033[36m $1 \033[0m"
}
function showYellow(){
echo -e "\033[33m $1 \033[0m"
}
function showWhite(){
echo -e "\033[37m $1 \033[0m"
}
function UpdateGitDir() {
if [[ -d $1 ]]
then
folderlist=`ls $1 | grep -v '^$'`
cd $1
else
echo "$1 is not directory, program exit"
exit -1
fi
curr_dir=`pwd`
showBlue "curr_dir: $curr_dir"
for i in $folderlist
do
if [[ -d $curr_dir/$i ]]
then
showYellow "enter $curr_dir/$i"
cd $curr_dir/$i
git pull
fi
done
}
root_dir=.
if (($# == 1))
then
root_dir=$1
fi
showBlue "begin, root_dir: $root_dir"
UpdateGitDir $root_dir
执行效果如下:
% ./git_pull.sh test
begin, root_dir: test
curr_dir: /home/work/test
enter /home/work/test/boost
Already up-to-date.
enter /home/work/test/redis
Already up-to-date.
小结
脚本很简单,拿来即用。
可进行修改调试,定制更的丰富的指令,比如进入子目录、更新git子模块等。