登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
VIP申请
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
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
相关帖子
Git Commit Message 应该怎么写?
Redis 介绍与 Node.js 使用教程
使用Yolo12算法进行区域内实时目标计数
ASPX一句话shell客户端
预编译出错shell
无密码的jsp大马shell
Vim在Windows的安装与基本使用
使用unsloth实现LoRA微调
10倍效率读代码!AI神器助你秒懂任何陌生项目(保姆级教程)
全功能PHP SHELL汉化版修改版
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
Git Commit Message 应该怎么写?
0
347
舒菀菀
2025-09-05
业界
Redis 介绍与 Node.js 使用教程
0
197
嗣伐
2025-09-05
业界
使用Yolo12算法进行区域内实时目标计数
0
110
孟清妍
2025-09-05
程序
ASPX一句话shell客户端
0
6
新程序
2025-09-07
程序
预编译出错shell
0
6
新程序
2025-09-07
程序
无密码的jsp大马shell
0
8
新程序
2025-09-07
安全
Vim在Windows的安装与基本使用
0
373
福清婉
2025-09-07
安全
使用unsloth实现LoRA微调
0
766
心麾浪
2025-09-07
科技
10倍效率读代码!AI神器助你秒懂任何陌生项目(保姆级教程)
0
4
兼罔
2025-09-08
程序
全功能PHP SHELL汉化版修改版
0
1
新程序
2025-09-08
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
签约作者
程序园优秀签约作者
发帖
葛雅隽
2025-6-8 13:25:53
关注
0
粉丝关注
9
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
凶契帽
9988
5
氛疵
9988
6
猷咎
9986
7
里豳朝
9986
8
肿圬后
9986
9
蝓俟佐
9984
10
虽裘侪
9984
查看更多