git使用的shell脚本集合:一键切换分支,一键创建备份分支

本文提供了一组用于简化Git操作的Shell脚本,包括一键切换分支、创建备份分支及删除远程分支等功能,适用于多项目管理。

背景:

项目较多,需要手动操作较麻烦,故新增脚本操作

1.一键切换分支.sh

#!/bin/bash
#使用方法:打开git bash, 命令行切换进入项目文件夹,  sh 当前脚本;
echo "<<<<<<<<该脚本作用:一键将所有项目的分支切换到指定分支>>>>>>>>>"
echo "<<<<<<<<温馨提示:请将该脚本放在存放项目的文件中,和项目路径同级>>>>>>>>>"

#输入
read -p "请输入你要切换的分支:" branch

#获取当前路径下的所有文件进行遍历
for dir in $(ls)
do
  if test -d $dir #是否目录
  then
	  cd $dir
			git checkout ${branch}
			echo ">>>>>>>"$dir"已切换分支:${branch}"			
	  cd ..
  else
      echo "<当前不是目录>"
  fi
done

2.一键新建备份分支.sh 

#!/bin/bash
#使用方法:打开git bash, 命令行切换进入项目文件夹,  sh 当前脚本;
echo "<<<<<<<<该脚本作用:以master创建新的分支并推送>>>>>>>>>"
echo "<<<<<<<<温馨提示:请将该脚本放在存放项目的文件中,和项目路径同级>>>>>>>>>"

remote_name="origin"
branch_master="master"

#输入
read -p "请输入你要新建的备份分支:" branch_name

#获取当前路径下的所有文件进行遍历
for dir in $(ls)
do
  if test -d $dir #是否目录
  then
	  cd $dir
	        #切换master
			git checkout $branch_master
			echo ">>>>>>>"$dir"已切换分支:${branch_master}"
			# 创建并切换到新分支
            git checkout -b $branch_name
			# 推送分支到远程仓库
            git push $remote_name $branch_name
			echo ">>>>>>>"$dir"已新增推送备份分支:${branch_name}"
			# 切换回主分支
            git checkout $branch_master
			echo ">>>>>>>"$dir"已切换分支:${branch_master}"
			# 删除本地备份分支
			git branch -D $branch_name
            echo ">>>>>>>"$dir"已删除备份分支:${branch_name}"			
	  cd ..
  else
      echo "<当前不是目录>"
  fi
done

3.一键删除远程分支

#!/bin/bash
#使用方法:打开git bash, 命令行切换进入项目文件夹,  sh 当前脚本;
echo "<<<<<<<<该脚本作用:删除本地备份分支>>>>>>>>>"
echo "<<<<<<<<温馨提示:请将该脚本放在存放项目的文件中,和项目路径同级>>>>>>>>>"

remote_name="origin"

#输入
read -p "请输入你要删除的分支:" branch_name

#获取当前路径下的所有文件进行遍历
for dir in $(ls)
do
  if test -d $dir #是否目录
  then
	  cd $dir
			# 删除分支
			git push origin --delete $branch_name
            echo ">>>>>>>"$dir"已删除远程分支:${branch_name}"			
	  cd ..
  else
      echo "<当前不是目录>"
  fi
done

4.批量删除远程分支

#!/bin/bash
#使用方法:打开git bash, 命令行切换进入项目文件夹,  sh 当前脚本;
echo "<<<<<<<<该脚本作用:删除本地备份分支>>>>>>>>>"
echo "<<<<<<<<温馨提示:请将该脚本放在存放项目的文件中,和项目路径同级>>>>>>>>>"

# 定义数组,需要删除的分支
arr=(0.1.0 0.2.0 0.3.0 0.4.0 0.5.0 0.6.0 0.7.0 0.8.0 0.9.0)

# 遍历数组
for i in "${arr[@]}"; do
echo $i
remote_name="origin"
#获取当前路径下的所有文件进行遍历
for dir in $(ls)
do
  if test -d $dir #是否目录
  then
	  cd $dir
			# 删除分支
			git push origin --delete $i
            echo ">>>>>>>"$dir"已删除远程分支:${i}"			
	  cd ..
  else
      echo "<当前不是目录>"
  fi
done
done

 

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值