当前位置:首页 > 操作系统 > 正文内容

运用 Shell 代码简化 Git 过程

邻居的猫1个月前 (12-09)操作系统283

切换分支的时分,需求更新一切的子模块,能够编写 Shell 代码简化这一进程。

本教程适用于 mac 体系,终端运用 zsh。

快速调用 Shell 脚本

  1. 将 Shell 代码存储为 .sh 文件,例如quickCheckout.sh
  2. 在终端中,cd 到当时文件夹,赋予代码运转权限:chmod +x quickCheckout.sh
  3. 翻开“访达”,进入“用户/用户名”文件夹,找到 .zshrc 文件(假如找不到测验 command+shift+. 来显现躲藏文件,或大局查找)
  4. 修改 .zshrc 文件,增加一行代码。
    其间文件方位要修改成自己的文件方位,别号要修改成自己的别号。
    例如这是一个 quickCheckout 脚本的别号:
alias quickcheckout='/Users/user/Desktop/Shell/quickCheckout.sh'

履行上面的操作后,就能够快速调用自己的 Shell 代码了:

截屏2024-06-25 14.45.50

快速切换 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}"

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=633

分享给朋友:

“运用 Shell 代码简化 Git 过程” 的相关文章

超聚变服务器2288H V6运用 iBMC 装置 Ubuntu Server 24.04 LTS及后续系统配置

超聚变服务器2288H V6运用 iBMC 装置 Ubuntu Server 24.04 LTS及后续系统配置

一. 超聚变服务器iBMC长途办理 超聚变服务器的iBMC芯片集成了一个专用的办理GE网口,供给全面的毛病确诊、自动化运维、硬件安全加固等办理特性。iBMC支撑Redfish、SNMP、IPMI 2.0等标准接口,并供给根据HTML5/VNC KVM的长途办理界面。它支撑监控、确诊、装备、Agent...

windows10u盘安装

windows10u盘安装

Windows 10 系统可以通过 U 盘进行安装,这是一个非常方便的方式,尤其是在没有 DVD 驱动器的情况下。下面是详细的步骤: 准备工作1. 下载 Windows 10 安装镜像:访问 Microsoft 官方网站下载 Windows 10 的安装镜像文件(ISO)。2. 准备一个至少 8GB...

word中嵌入式图片显示不完整, 原因分析

word中嵌入式图片显示不完整, 原因分析

在Word文档中,如果嵌入式图片显示不完整,可能有以下几个原因和解决方法:1. 图片大小调整:在Word中插入图片后,可能会因为图片过大而无法完全显示。你可以尝试调整图片的大小,使其适合文档的页面大小。右键点击图片,选择“大小和位置”,然后调整“缩放”或“大小”选项。2. 页面设置:检查文档的页面设...

linux系统调用,什么是Linux系统调用?

linux系统调用,什么是Linux系统调用?

Linux系统调用(System Call)是Linux内核提供给用户空间程序的一种接口,它允许用户空间程序请求内核执行特定的操作。这些操作包括文件操作、进程控制、内存管理等。系统调用是用户程序和操作系统内核之间的桥梁,它们通过系统调用表来组织和管理。系统调用可以分为几类:1. 进程控制:如fork...

windows7扫描仪在哪里,Windows 7系统扫描仪程序位置及使用方法详解

windows7扫描仪在哪里,Windows 7系统扫描仪程序位置及使用方法详解

在Windows 7中,要找到并使用扫描仪,您可以按照以下步骤操作:1. 打开“开始”菜单:点击屏幕左下角的“开始”按钮。2. 搜索“Windows Fax and Scan”:在“开始”菜单的搜索框中输入“Windows Fax and Scan”,然后按回车键。3. 启动Windows Fax...

linux的优势,揭秘其优势与广泛应用

Linux 是一种自由和开放源代码的类 UNIX 操作系统,它具有许多优势,以下是其中的一些主要优势:1. 成本效益:Linux 是免费的,用户可以自由地下载、安装和使用它,而无需支付任何费用。此外,许多 Linux 发行版都提供了免费的软件包和更新。2. 稳定性:Linux 以其稳定性和可靠性而闻...