登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
使用 Shell 代码简化 Git 步骤
使用 Shell 代码简化 Git 步骤
[ 复制链接 ]
葛雅隽
2025-6-8 13:25:53
切换分支的时候,需要更新所有的子模块,可以编写 Shell 代码简化这一过程。
本教程适用于 mac 系统,终端使用 zsh。
快速调用 Shell 脚本
将 Shell 代码存储为 .sh 文件,例如quickCheckout.sh
在终端中,cd 到当前文件夹,赋予代码运行权限:chmod +x quickCheckout.sh
打开“访达”,进入“用户/用户名”文件夹,找到 .zshrc 文件(如果找不到尝试 command+shift+. 来显示隐藏文件,或全局搜索)
编辑 .zshrc 文件,添加一行代码。
其中文件位置要修改成自己的文件位置,别名要修改成自己的别名。
例如这是一个 quickCheckout 脚本的别名:
alias quickcheckout='/Users/user/Desktop/Shell/quickCheckout.sh'
复制代码
执行上面的操作后,就可以快速调用自己的 Shell 代码了:
快速切换 Git 分支
下面的代码可以快速切换分支,包括主存储库和所有的子存储库:
#!/bin/zsh
#快速切换分支,包括所有子模块
#会将主模块和所有子模块 checkout 到指定分支,随后执行 git pull
# 定义颜色
BLUE='\033[34m'
RED='\033[91m'
NC='\033[0m'
# 检查是否在 git 仓库中
if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
echo -e "${RED}需要移动到 Git 仓库。${NC}"
exit 1
fi
# 获取用户输入的分支名称
echo -e "${BLUE}请输入要切换到的分支名称:${NC}"
read branch_name
# 检查是否输入了分支名称
if [ -z "$branch_name" ]; then
echo -e "${RED}分支名称不能为空${NC}"
exit 1
fi
# 切换到指定分支
git checkout -m $branch_name
git pull || echo "'${RED}主项目拉取最新的更改失败${NC}'"
if [ $? -ne 0 ]; then
echo -e "${RED}切换到分支 $branch_name 失败${NC}"
exit 1
fi
# 遍历所有子模块并切换到同名分支
git submodule foreach "
git checkout -m $branch_name || echo "'${RED}子模块 \$name 切换到分支 $branch_name 失败${NC}'"
git pull || echo "'${RED}子模块 \$name 拉取最新的更改失败${NC}'"
"
echo -e "${BLUE}操作完成。${NC}"
# 检查每个子模块的切换状态
echo "\033[34m-------------------------------\033[0m"
git submodule foreach '
current_branch=$(git symbolic-ref --short HEAD)
if [ "$current_branch" != "'"$branch_name"'" ]; then
echo "'"${RED}子模块 \$name 当前分支为 \$current_branch,未切换到分支 $branch_name${NC}"'"
else
echo "'"${BLUE}子模块 \$name 成功切换到分支 $branch_name${NC}"'"
fi
'
echo "\033[34m-------------------------------\033[0m"
复制代码
快速 Pull
下面的代码可以快速的 Pull,包括主存储库和所有的子存储库:
#!/bin/zsh
# 检查是否在 git 仓库中
if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
echo "\033[34m需要移动到 Git 仓库。\033[0m"
exit 1
fi
# 询问是否需要清除本地的更改
echo "\033[34m是否需要清除本地的更改? (y/n)\033[0m"
read -r response
if [ "$response" = "y" ] || [ "$response" = "Y" ]; then
echo "\033[34m正在清除主存储库的本地更改...\033[0m"
git reset --hard HEAD
git clean -fd
echo "\033[34m正在清除子模块的本地更改...\033[0m"
git submodule foreach --recursive '
echo "正在清除 $name 的本地更改...";
git reset --hard HEAD;
git clean -fd
'
fi
# 主仓库
echo "\033[34m正在 Pull 主存储库...\033[0m"
git pull
# 遍历所有子模块
echo "\033[34m正在 Pull 子模块...\033[0m"
git submodule foreach --recursive '
echo "正在获取 $name...";
git pull
'
echo "\033[34mPull 操作完成。\033[0m"
复制代码
快速切换目录
如果有几个常用目录的话,写一个脚本会很快
我添加了几个自己常用的目录,这样输入 to 之后就能快速跳转了
#!/bin/zsh
# ANSI 转义序列,用于设置文本颜色为深蓝色
BLUE='\033[34m'
NC='\033[0m' # No Color, 用于重置颜色
# 定义一个关联数组来存储目录路径
typeset -A directories
typeset -A directories_name
# 添加一些目录到字典中
directories=(
d "/Users/user/Desktop"
n "/Users/user/Desktop/Note"
)
directories_name=(
d "Desktop"
n "笔记"
)
# 显示提示信息
print "${BLUE}-----------------------${NC}"
print "${BLUE}请输入要切换到的目录路径,回车回到主目录:${NC}"
for key in "${(@k)directories_name}"; do
print "${BLUE}输入 ${key}, 去往:${directories_name[$key]}${NC}"
done
read -r dir_name
# 检查目录
if [[ -n "${directories[$dir_name]}" ]]; then
if cd "${directories[$dir_name]}"; then
print "${BLUE}成功切换到目录 ${directories[$dir_name]}${NC}"
else
print "${BLUE}无法切换到目录 ${directories[$dir_name]}${NC}"
exit 1
fi
elif [[ -z "$dir_name" ]]; then
cd
else
print "${BLUE}目录名称 $dir_name 不存在${NC}"
exit 1
fi
print "${BLUE}-----------------------${NC}"
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
使用
Shell
代码
简化
Git
相关帖子
使用TCL脚本快速创建Quartus工程
Roslyn 技术解析:如何利用它做代码规范检查与运行时代码生成?
使用EB tresos对配置can、icu
C# 使用 using 关键字间接实现只读局部变量的方法
DeepResearch代码浅析
使用Scalar.AspNetCore来管理你的OpenApi
WPF/C#:使用Microsoft Agent Framework框架创建一个带有审批功能的终端Agent
FFmpeg开发笔记(八十四)使用国产的librestreaming实现RTMP直播
使用PySide6/PyQt6实现自定义窗口布局,实现类似FluentWindow效果
使用 Github Pages 和 Hexo 搭建博客
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
使用TCL脚本快速创建Quartus工程
0
740
楞粳
2025-10-15
业界
Roslyn 技术解析:如何利用它做代码规范检查与运行时代码生成?
0
1015
辖瑁地
2025-10-15
安全
使用EB tresos对配置can、icu
0
648
胥望雅
2025-10-16
安全
C# 使用 using 关键字间接实现只读局部变量的方法
0
284
东门芳洲
2025-10-17
科技
DeepResearch代码浅析
0
104
孜稞
2025-10-17
业界
使用Scalar.AspNetCore来管理你的OpenApi
0
367
揿纰潦
2025-10-17
业界
WPF/C#:使用Microsoft Agent Framework框架创建一个带有审批功能的终端Agent
0
993
谅潭好
2025-10-18
业界
FFmpeg开发笔记(八十四)使用国产的librestreaming实现RTMP直播
0
582
讹过畔
2025-10-19
业界
使用PySide6/PyQt6实现自定义窗口布局,实现类似FluentWindow效果
0
407
吉芷雁
2025-10-19
业界
使用 Github Pages 和 Hexo 搭建博客
0
80
荡俊屯
2025-10-20
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
葛雅隽
2025-6-8 13:25:53
关注
0
粉丝关注
11
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
dage888
999994
3934307807
992122
4
富账慕
9983
5
邹语彤
9982
6
二艰糖
10000
7
刎唇
9993
8
匝抽
9986
9
聚怪闩
9960
10
孙淼淼
9977
查看更多