需求
- 如果当前目录下全部是git 仓库,手动进入每个目录,并执行
git pull ,操作重复,费时费力 - 结合网上搜索的例程,整理了一下,实现自动拉取当前目录下所有的 git 仓库
shell 脚本
- windows上的git bash,其实是一个
mingw64 的环境,可以运行Linux的大部分命令,支持Linux shell脚本的运行
#! /bin/bash
function git_pull_all() {
for dir_name in `ls $1`
do
cur_dir="$1/$dir_name"
if [ -d $cur_dir ]
then
echo " -----------------------------------------------"
echo " --- $cur_dir enter ---"
echo "[01] : cd $cur_dir"
cd $cur_dir
echo "[02] : git status"
git status
echo "[03] : git clean -xdf"
git clean -xdf
echo "[04] git submodule update --init --force --recursive"
git submodule update --init --force --recursive
echo "[05] git pull"
git pull
echo " --- $cur_dir exit --- "
fi
done
}
echo " current directory : $PWD "
echo " --- start git_pull_all --- "
git_pull_all $PWD
echo " --- end git_pull_all --- "
脚本运行
- 打开 git-bash命令行,输入:
$ ./git_pull_all.sh
- 可以手动把部分仓库 reset 到较老的commit上,看看效果
- 注意如果仓库有修改,可能需要
git reset --hard 才能正确的拉取,所以还是需要关注git pul l的结果
小结
- 初步实现当前目录下现有git 仓库的自动更新效果
- 如果git 仓库有更改,如切换到其他的分支,git pull 可能会产生冲突,可以自行修改脚本,实现自己想要的效果,当然谨慎使用:
git reset --hard ,会清除修改的内容
|