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

运用 Shell 代码简化 Git 过程

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

切换分支的时分,需求更新一切的子模块,能够编写 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 过程” 的相关文章

tomcat中虚拟主机以及web应用程序的装备

tomcat中虚拟主机以及web应用程序的装备

一:新建虚拟主机 1. 在tomcat里新建文件夹myapps,在里面增加ROOT文件,放入网站的主页文件 新建文本文档,输入你想要的内容我这儿的内容是TOM.AI,把文本文档的姓名改成index.htm 2. server.xml下每个host节点就代表一个主机,相当于一个网站。 用记事本翻开to...

macos截图,macos系统下载官网

在MacOS上截图有几种不同的方法,以下是几种常用的方式:1. 全屏截图:按下`Shift Command 3`。截图会自动保存到桌面。2. 自定义区域截图:按下`Shift Command 4`,然后拖动鼠标选择要截图的区域。截图会自动保存到桌面。3. 窗口截图:按下`Shif...

Windows的桌面是指,什么是Windows的桌面?

Windows的桌面是指,什么是Windows的桌面?

Windows的桌面是指用户打开计算机后,首先看到的一个可视化界面。它包含了图标、任务栏、背景图片等元素。用户可以在桌面上放置各种应用程序的快捷方式,以便快速启动。同时,桌面也是用户与计算机交互的一个重要平台,用户可以通过桌面上的各种工具和应用程序来完成任务。什么是Windows的桌面?Window...

windows10是什么系统

windows10是什么系统

Windows 10是微软公司开发的一款个人电脑操作系统,首次发布于2015年7月29日。它是Windows NT操作系统系列的最新版本,也是Windows 8和Windows 8.1的继任者。Windows 10引入了许多新的功能和改进,包括一个全新的开始菜单、改进的多任务处理能力、增强的触摸支持...

嵌入式视觉,嵌入式是什么意思

嵌入式视觉,嵌入式是什么意思

嵌入式视觉(Embedded Vision)是指将视觉功能集成到嵌入式系统中,使得系统能够感知和解释视觉信息。这种技术通常涉及到图像处理、计算机视觉、机器学习等领域,并且广泛应用于智能交通、工业自动化、安全监控、机器人技术、医疗成像等领域。嵌入式视觉系统的基本组成包括图像传感器、处理器、存储器、通信...

windows9,新功能、发布时间及激活教程

windows9,新功能、发布时间及激活教程

Windows 9是一个引起广泛讨论但从未正式发布的操作系统。以下是关于Windows 9的详细信息:1. Windows 9的存在: 虽然微软从未正式发布过Windows 9,但确实存在一些所谓的“Windows 9”版本。例如,有Youtuber通过微软的开发者计划下载了一个早期测试版系统...