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 main | git checkout main |
git switch -c feature/x | git 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 命令参数详解。