1.1.23. git switch命令¶
用于在不同的分支之间切换。
自 Git 2.23(2019年8月) 版本引入以来,它旨在提供一个比 git checkout 更直观、更专注的方式来处理分支切换操作,从而简化用户的操作流程并减少混淆。
1. 基本用途¶
切换到已有的分支:
git switch 分支名
新建并切换到一个新分支(基于当前分支):
git switch -c 新分支名
新建并切换到一个新分支(基于指定起点):
git switch -c 新分支名 起点
进入脱离HEAD状态(Detached HEAD)
git switch <commit-hash>/<tag_id>
备注
在 Git 中,HEAD 通常指向你当前所在的分支(比如 main 或 dev)。但如果你 checkout 到一个特定提交或标签,而不是分支名,HEAD 就变成“游离状态”,直接指向一个具体的 commit。这意味着你虽然可以查看、修改、提交代码,但你所做的提交不会属于任何分支,很容易“丢失”。假设你此时提交了修改,这个提交不会挂在任何分支上:一旦你切换分支或关闭仓库,这个提交就不容易找回;如果你想保留这些更改,应该新建分支并切换过去再提交。
2. 与 git checkout 的区别¶
+---------------------+------------------+--------------------+
| 功能 | `git switch` | `git checkout` |
+=====================+==================+====================+
| 切换分支 | ✅(推荐使用) | ✅ |
+---------------------+------------------+--------------------+
| 创建并切换分支 | ✅ | ✅ |
+---------------------+------------------+--------------------+
| 还原文件/暂存区内容 | ❌ | ✅ |
+---------------------+------------------+--------------------+
| 使用体验 | 更清晰,语义明确 | 功能过多,容易混淆 |
+---------------------+------------------+--------------------+
备注
git switch 专注于“分支切换”,而 git restore 专注于“文件还原”,这两个命令共同代替了 git checkout 的大多数用途。
常用示例¶
# 切换到已有的 dev 分支
git switch dev
# 创建并切换到 feature/login 分支
git switch -c feature/login
# 从远程分支 origin/dev 创建并切换到本地分支 dev
git switch -c dev origin/dev