git switch

6 阅读2分钟

Git 分支切换配置全解析(含各模式)

完整总结(含各模式配置+使用)

一、前缀匹配模式(Git 原生默认)

核心:仅匹配分支名「开头」的关键词,Git 原生支持,仅需配置基础别名。

1. 配置方式(全局生效)

# 核心别名:gs = switch(简化切换命令)
git config --global alias.gs switch
# 可选:gss = 一键切回上一个分支;gsc = 创建并切换新分支
git config --global alias.gss 'switch -'
git config --global alias.gsc 'switch -c'
2. 使用命令

git gs bf  # 匹配以 bf 开头的分支(如 bf-dev)
git gss    # 一键切回上一个分支
git gsc bf-dev  # 创建并切换 bf-dev 分支
3. 关键说明
  • 仅当「bf 开头的分支唯一」时生效,多分支会报错;

  • 无需额外筛选,纯 Git 原生逻辑,最快最轻便。


二、模糊匹配模式(任意位置匹配)

核心:匹配分支名「任意位置」的关键词,一键切换首个匹配结果。

1. 配置方式(全局别名)

# 配置 gsf = 模糊匹配包含关键词的分支并切换首个结果
git config --global alias.gsf '!f() {
  git switch $(git branch | grep -E "$1" | head -n 1);
}; f'
2. 使用命令

git gsf bf  # 匹配所有包含 bf 的分支,切换第一个结果(如 bugfix/bf-001)
git gsf dev # 匹配所有包含 dev 的分支,切换第一个结果
3. 关键说明
  • grep -E "$1" 实现「任意位置包含关键词」匹配;

  • head -n 1 取首个匹配结果,无匹配时会报分支不存在错误。


三、自由选择模式(交互式筛选)

核心:列出所有匹配关键词的分支,手动选序号切换,支持本地/远程分支。

1. 配置方式(分本地/远程)
① 本地分支交互式匹配(gsfi)

git config --global alias.gsfi '!f() {
  branches=$(git branch | grep -E "$1" | sed "s/^[ \*]*//");
  if [ -z "$branches" ]; then
    echo "❌ 无包含 '$1' 的本地分支"; return 1;
  fi
  echo "🔍 匹配分支:"; echo "$branches" | cat -n;
  read -p "输入序号切换:" choice;
  selected=$(echo "$branches" | sed -n "${choice}p");
  [ -z "$selected" ] && echo "❌ 无效序号" && return 1;
  git switch "$selected"; echo "✅ 已切换到 $selected";
}; f'
② 远程分支交互式匹配(gsfir)

git config --global alias.gsfir '!f() {
  branches=$(git branch -r | grep -E "$1" | sed "s/^[ \t]*origin\///");
  if [ -z "$branches" ]; then
    echo "❌ 无包含 '$1' 的远程分支"; return 1;
  fi
  echo "🔍 匹配远程分支:"; echo "$branches" | cat -n;
  read -p "输入序号切换:" choice;
  selected=$(echo "$branches" | sed -n "${choice}p");
  [ -z "$selected" ] && echo "❌ 无效序号" && return 1;
  git switch --track origin/"$selected"; echo "✅ 已切换到远程分支 $selected";
}; f'
2. 使用命令

git gsfi bf   # 交互式选包含 bf 的本地分支(输序号切换)
git gsfir bf  # 交互式选包含 bf 的远程分支(自动创建本地分支)
3. 关键说明
  • 纯 Git 原生命令实现,无需安装 fzf 等工具;

  • 自带错误提示(无匹配/无效序号),更健壮。


配置验证 & 管理

1. 查看所有已配置别名

git config --global --get-regexp alias
2. 如需修改/删除别名

# 修改:重新执行配置命令即可覆盖
git config --global alias.gs 'switch'  # 覆盖 gs 别名
# 删除:
git config --global --unset alias.gsfi

核心总结

模式配置命令(一键复制)使用命令核心特点
前缀匹配git config --global alias.gs switchgit gs 关键词原生、最快,仅匹配分支开头
模糊匹配见「模糊匹配模式-配置方式」git gsf 关键词任意位置匹配,一键切首个结果
自由选择见「自由选择模式-配置方式」(gsfi/gsfir)git gsfi 关键词交互式选序号,支持本地/远程
所有配置均为「全局生效」(--global),一次配置永久可用,覆盖从快速切换到精准选择的全场景。

(注:文档部分内容由 AI 生成)