首页/开发/Git 与协作速查/git switch 切换分支

git switch 切换分支

Git 2.23 起的新式切换命令:-c 创建并切换、-C 覆盖创建、--detach 进入分离头指针,- 回到上一个分支。

Git 与协作速查开发更新于 2026-10-13

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 保存现场再切换。

易错点

  • 工作区改动与目标分支冲突时切换会被拒绝,先提交或 stash 现场再切
  • 在分离头指针上提交后忘记建分支,切走后提交会悬空,需要靠 reflog 找回
  • -C 会重置同名分支,误用可能覆盖既有分支指向,确认分支归属再执行
  • 老脚本里 checkout -b 与 switch -c 等价,混用不影响状态,但团队内最好统一口径

数据来源与参考

  • Git 官方文档:git-switch
  • Git 2.23 发行说明(switch/restore 引入)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌