【shell脚本】闲来无事,一边查一边写,更新工作空间下所有git项目

本文介绍了一个使用Shell脚本自动更新工作空间下所有Git项目的实例,通过批量拉取和切换分支,节省开发者的时间,特别适合分部众多且频繁变动的项目环境。
摘要由CSDN通过智能技术生成

【shell脚本】闲来无事,一边查一边写,更新工作空间下所有git项目
公司微服务项目分部不较多,本人又比较懒,项目多了每次拉取浪费很多时间,每天下班前运行一下,不耽误第二天工作,搞了个脚本方便自己,也提供给有需求的同学参考一下。

#!/bin/bash

#设置项目目录的父目录位当前目录,如果放在工作空间也可以不用
project_directory=$PWD

echo "工作目录:$project_directory"

#检查项目是否存在
if [ ! -d "$project_directory"];
then
   echo "项目目录不存在:$project_directory"
   exit 1
fi

#进入目录
cd "$project_directory"

#获取目录列表
project_dirs=$(ls -d */)

#遍历项目目录并执行git pull
for project_dir in $project_dirs;
do
   echo "进入 $project_dir"
   cd "$project_dir"
   # 如果是git项目,则拉取
   if test -d .git;
       then 
         echo "开始更新: $project_dir"
       # 获取本地所有分支,也可以回去远程所有分支,根据跟人需求,基本用不到
      branches=$(git branch --list | cut -c 3-)
       # 遍历每个分支代码并拉取
       for branch in $branches
       do
         # 切换分支
         git checkout $branch
         echo "当前分支: $branch"
         # 拉取代码
         git pull origin $branch
      done
    else
       echo "$project_dir 不是一个git仓库,跳过更新"
   fi
   # 获取当前所在文件夹名称
   current_folder=$(basename "$(pwd)")
   echo "当前工程: $current_folder"
   # 判断当前文件文件夹是否为需要切换分支的项目,方便每次打开的时候在工作分支
   if [ "$current_folder" = "project_1" ] || [ "$current_folder" = "project_2" ] ;
      then
         git checkout 0.0.1-dev;
         echo "当前工程:$project_dir 切换0.0.1-dev分支" 
         # 如果需要打开即用,可以打开注释,现实更新代码并编译
         # mvn clean compile package -Dmaven.test.skip=true
      elif [ "$current_folder" = "project_3" ];
         then 
         git checkout dev_test;
         echo "当前工程:$project_dir dev_test" 
         # mvn clean compile package -Dmaven.test.skip=true
      elif [ "$current_folder" = "project_4" ];
         then
         git checkout 0.0.5-dev;
         echo "当前工程:$project_dir 切换0.0.5-dev分支" 
         # mvn clean compile package -Dmaven.test.skip=true
      else
         echo "非指定工程,拉取后不切换分支"
      fi
   cd ..
done
echo "======================================\n"
echo "所有项目更新完毕,哈哈哈哈哈哈哈哈哈哈...\n\n"

# 获取当前日
day=$(date +%d)
# echo "当前日: $day"

echo "我有一句话不知当讲不当讲\n不论你怎么想我都要说\n"

# 根据当前日最后打印一句语录,当做娱乐,如果愿意可以外挂文件获取或者其他方式,自己拓展玩
case $day in
1) echo "每天给自己一个微笑,生活便会回你一个温暖的拥抱";;
2) echo "成长就是,从前我难过的时候,油盐不进,茶饭不思,现在能一边流泪一边去厨房给自己下碗面,还不忘加俩荷包蛋";;
3) echo "要明白被别人拉起来,和自己站起来是两回事";;
4) echo "发自己的光就好,不要吹灭别人的灯";;
5) echo "能说服一个人的,从来不是道理,而是南墙;能点醒一个人的,从来不是说教,而是磨难";;
6) echo "你吃土的时候,没人问你苦不苦;你吃肉的时候,总会有人问你香不香";;
7) echo "物极必反,困则思变";;
8) echo "等风来不如追风去,追逐的过程就是人生的意义";;
9) echo "放弃不难,但坚持一定很酷";;
10) echo "拥抱孤独之后,时间会让你发现自己的力量无穷";;
11) echo "你要相信自己背后的疼痛是为了长出翅膀";;
12) echo "不管昨夜你是多么泣不成声,早晨醒来城市依旧车水马龙";;
13) echo "万物皆有裂缝,那是光进来的地方";;
14) echo "只要小伙精神在,到哪都是高富帅";;
15) echo "抽烟只抽红塔山,这个小伙不简单";;
16) echo "我的草原我的马,我想咋耍就咋耍";;
17) echo "明知山有虎,不上明知山";;
18) echo "不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景就已经和从前不一样了";;
19) echo "先讲语录后搬砖,精神小伙不一般";;
20) echo "生活皆成长,成长即人生";;
21) echo "社会没有参天树,只有金钱降万物";;
22) echo "自古真情留不住,唯有发财靠得住";;
23) echo "是狼到哪里都吃肉,是犊子到哪里都挨揍";;
24) echo "想 全是问题 做 全是答案";;
25) echo "所遇之事不管好坏,必将有益于我";;
26) echo "所谓门槛,能力够了就是门,能力不够就是槛";;
27) echo "三更梦醒,你是檐上落下的星";;
28) echo "世行无难事,只要肯攀登";;
29) echo "宝剑锋从磨砺出,梅花香自苦寒来";;
30) echo "不要着急,最好的总会在不经意的时候出现";;
31) echo "积极思考、积极行动,成功将随之而来";;
esac
#如果有需要执行完成可以自己关机,加上命令的事情
#shutdown -h now


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Git指令的Shell脚本,能够快速便捷地管理Git库,包括添加修改、提交修改、显示库状态、推送到远程库、从远程库更新到本地、版本恢复等操作。 使用方法: 1. 在Linux系统中,将本文件放在Git目录下,利用Shell运行本文件; 2.在windows系统中,需下载安装与操作系统相对应的Git软件,并将本文件放在Git目录下,双击即可运行。 运行示例: Please choose the first letter of options. [Add|Commit|Diff|Fetch|Exit|Help|Log|Push|User|Reset|Status]? h A: Add all changes to repository. C: Commit all changes to repository. D: Show differences between current version with HEAD->. E: Exit shell script. F: Fetch origin/master and merge. L: Show latest two-weeks logs of repository. P: Push commissions to origin/master. U: User command mode(Press ‘Enter’ to exit). R: Reset current version according version_id. S: Show status of repository. Please choose the first letter of options. [Add|Commit|Diff|Fetch|Exit|Help|Log|Push|User|Reset|Status]? s On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: Git.sh modified: PyNote/PyNote_2.md no changes added to commit (use "git add" and/or "git commit -a") Please choose the first letter of options. [Add|Commit|Diff|Fetch|Exit|Help|Log|Push|User|Reset|Status]? a On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD ..." to unstage) modified: Git.sh modified: PyNote/PyNote_2.md
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值