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