git switch 是什么
git switch 是 Git 2.23 引入的切分支命令,专门负责在分支之间移动 HEAD 并更新工作区。相比继承了两套语义的 git checkout,它在命令名上就表明了意图:切分支用 switch,还原文件用 restore。
常用形式
-c 表示创建并切换,等价于原来的 checkout -b;-C 在分支已存在时先重置再切换;--detach 进入分离头指针状态,用来查看历史或做临时验证;单独一个减号可以回到上一个分支,适合在两条分支之间快速来回。
基本信息
| 适用平台 | Linux / macOS / Windows(Git 2.23 起) |
|---|---|
| 语法 | git switch [选项] <分支> |
| -c | 创建并切换到新分支 |
| -C | 同名分支存在时重置后切换 |
| --detach | 进入分离头指针状态 |
| - | 回到上一个分支 |
典型使用场景
- 开始新任务:用 -c 从主干拉出功能分支并立刻切过去
- 来回核对:用 - 在两条分支之间快速切换对比
- 查看历史:用 --detach 检出标签或提交,只读地观察
- 替换老写法:把 checkout -b 改成语义更清晰的 switch -c
- 切换前自查:确认工作区干净,避免改动被带到别的分支
常用示例
常用示例
git switch main # 切回主干
git switch -c feature/login # 创建并切换到新分支
git switch - # 回到上一个分支
git switch --detach v2.0 # 检出标签,进入分离头指针
git branch --show-current # 确认当前所在分支
git status --short # 切换前后核对工作区状态常用选项
| 选项 | 作用 | 注意 |
|---|---|---|
| -c <分支> | 创建并切换过去 | 等价于 checkout -b |
| -C <分支> | 存在则重置后切换 | 有丢弃风险,谨慎使用 |
| --detach | 分离头指针 | 此时的提交不属于任何分支 |
| - | 切回上一个分支 | 只记录上一次的位置 |
| 分支不存在 | 直接报错并中止 | 确认名字,或加 -c 新建 |
切换分支本质上是移动 HEAD 并更新工作区文件:目标分支有而本地没有的已跟踪文件会出现,本地独有的已跟踪文件会被移除,未跟踪文件则原样保留。
switch 只管分支切换,restore 只管文件还原。把旧命令 checkout 的两类职责拆开后,命令意图更明确,脚本也更好读。
工作区有未提交改动、且与目标分支冲突时,切换会被拒绝或把改动带过去。先提交,或先 git stash 保存现场再切换。