git switch 是 Git 2.23 从 git checkout 拆出来的「专职切换」命令:只负责切分支、建分支、进 detached HEAD,不再兼职恢复文件。语义单一,误操作空间小得多。

本文列出 git switch 的常用参数,并对照给出老写法,方便维护旧脚本时互相换算。

ℹ️
关于本系列
本文是《Git 使用教程》按命令拆分的第 19 / 28 篇,全部收录在 Git 栏目。参数表列的是日常高频项,并非穷举;想看某个命令的完整参数,用 git switch -h 看精简列表、git help switch 看完整手册。示例以 Git 2.56.0 为准。

一、命令语法

先看语法骨架,再对照下一节的参数表。<占位> 表示必填值,实际输入时不要带尖括号;[...] 表示可选项,-- 用来分隔选项与路径。

bash语法
git switch [<options>] <branch>
git switch -c <new-branch> [<start-point>]

二、参数逐项详解

下表按用途列出 git switch 的常用参数,每项都注明了「它到底改变了什么」。

参数作用
-c <名字> / --create新建分支并切过去;对应老写法 git checkout -b
-C <名字> / --force-create分支已存在时强制重置到起点再切;对应 checkout -B
<start-point>新分支的起点,默认当前 HEAD,可写 main、标签、某个哈希
--detach切到某个提交进入游离 HEAD 状态,用于临时查看历史版本
-切回上一个分支,来回切换非常方便
--guess / --no-guess本地无同名分支时,是否自动按远端同名分支创建并建立跟踪(默认开启)
-t / --track显式基于远端分支创建本地分支并建立跟踪
-m / --merge本地改动与目标分支冲突时尝试三方合并,而不是直接拒绝切换
--conflict=<风格>配合 -m 指定冲突标记风格
--orphan <名字>创建一条没有父提交的新分支,用于开启全新历史
--discard-changes丢弃本地改动强行切换,危险,一般改用 stash
-q / --quiet静默

新命令与老写法对照

新写法老写法
git switch maingit checkout main
git switch -c feature/xgit checkout -b feature/x
git restore <file>git checkout -- <file>
git restore --staged <file>git reset HEAD <file>

三、常用示例

日常切换

bash日常切换
git switch -c feature/login
git switch main
git switch -                       # 回到刚才的分支
git branch --show-current

基于远端分支建本地分支

bash基于远端分支建本地分支
git fetch --prune
git switch feature/payment         # --guess 自动按 origin/feature/payment 建分支
git switch -t origin/release/2.0

临时查看某个历史版本

bash临时查看某个历史版本
git switch --detach v1.2.0
git log --oneline -3
git switch main                    # 看完切回来

四、注意事项

⚠️
本地有改动时切换会被拒绝
这是保护,不是故障。标准做法是先 git stash push -u -m "切分支前保存",切完再 git stash pop;或者直接 git switch -c <新分支> 把改动带到新分支上。
版本提示: git switch 需要 Git 2.23+。老环境里只能用 git checkout;注意 checkout 同时管切换和恢复文件,写脚本时容易把路径参数误当成分支名。

五、小结

把 switch 当成「只管 HEAD 指向哪里」的命令:切分支用 switch,恢复文件用 restore,两者不再混用。记住 -c 新建、- 回切、--detach 临时看历史版本,就覆盖了绝大多数场景。

本系列共 28 篇,一个命令一篇,完整目录见 Git 栏目。下一篇:git checkout 命令参数详解。