0
点赞
收藏
分享

微信扫一扫

git bash shell 脚本 :自动拉取目录下所有的git 仓库


需求

  • 如果当前目录下全部是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"
# echo $cur_dir
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​

git bash shell 脚本 :自动拉取目录下所有的git 仓库_git

  • 可以手动把部分仓库 reset 到较老的commit上,看看效果
  • 注意如果仓库有修改,可能需要 ​​git reset --hard​​​才能正确的拉取,所以还是需要关注​​git pul​​l的结果

小结

  • 初步实现当前目录下现有git 仓库的自动更新效果
  • 如果git 仓库有更改,如切换到其他的分支,git pull 可能会产生冲突,可以自行修改脚本,实现自己想要的效果,当然谨慎使用:​​git reset --hard​​,会清除修改的内容


举报

相关推荐

0 条评论