Git 2.23 版本后切换分支命令 switch 与 checkout 区别?

文章导读
对于日常分支切换操作,Git 2.23 之后推荐优先使用 git switch,它将分支操作与文件恢复操作分离,能减少误操作风险;git checkout 依然可用,但在新脚本或团队协作中建议逐步迁移到新命令。
📋 目录
  1. 壹 命令速用版
  2. 贰 为什么会这样
  3. 叁 分步处理
  4. 肆 怎么验证是否生效
  5. 伍 常见坑
  6. 陆 参考来源
A A

对于日常分支切换操作,Git 2.23 之后推荐优先使用 git switch,它将分支操作与文件恢复操作分离,能减少误操作风险;git checkout 依然可用,但在新脚本或团队协作中建议逐步迁移到新命令。

先说结论:git switch 专用于分支切换,git checkout 功能混合容易误触,新项目建议用 switch。

  • 适合:日常开发切换分支、创建新分支。
  • 重点看:checkout 还能恢复文件,switch 不行。
  • 别忽略:旧脚本和 CI 流程可能依赖 checkout,迁移需测试。

命令速用版

如果你只是想切换分支或创建分支,可以直接使用以下命令替代原有的 checkout 用法:

# 切换到已有分支
git switch <branch-name>

# 创建并切换到新分支
git switch -c <new-branch-name>

# 切换到上一个分支(类似 cd -)
git switch -

原有的 git checkout <branch> 依然有效,但官方文档建议在新场景中使用 switch。

为什么会这样

在 Git 2.23 版本之前,git checkout 承担了太多职责。它既可以用来切换分支,也可以用来恢复工作区文件。这种设计容易导致误操作,比如你想切换分支,却意外覆盖了未提交的文件修改。

Git 2.23 版本后切换分支命令 switch 与 checkout 区别?

为了解决这个问题,Git 社区在 2019 年发布的 2.23.0 版本中引入了两个新命令:git switch 专门用于切换分支,git restore 专门用于恢复文件。这样分工更明确,减少了命令参数的复杂性,也降低了新手误删代码的概率。

分步处理

如果你打算从 checkout 迁移到 switch,可以参考以下步骤:

  1. 确认 Git 版本:在终端运行 git `--version`,确保版本号大于或等于 2.23.0。如果版本过低,新命令无法使用。
  2. 尝试切换分支:习惯使用 git switch <branch> 代替 git checkout <branch>。
  3. 处理创建分支:以前用 git checkout -b <name>,现在改用 git switch -c <name>。
  4. 文件恢复场景:如果需要撤销文件修改,不要用 checkout,改用 git restore <file>。

怎么验证是否生效

执行切换命令后,可以通过以下方式确认当前分支是否正确:

  • 运行 git branch `--show-current`,输出应为当前分支名。
  • 运行 git status,查看头部信息是否显示 On branch <name>。
  • 如果是创建新分支,确认提交历史是否连贯,没有意外 detached HEAD 状态。

常见坑

  • 旧教程兼容性:网上大量旧教程仍使用 checkout,阅读时需自行转换思路,不要直接复制命令到生产脚本。
  • Detached HEAD 状态:git switch 默认不允许切换到提交哈希(commit hash),这会进入 detached HEAD 状态。如果必须这么做,需要加 `--detach` 参数,而 checkout 默认允许。
  • 自动化脚本:CI/CD 流水线中的脚本如果写死了 checkout,无需强制修改,但新编写的脚本建议用 switch 以保持清晰。

参考来源

  • Git Official Documentation - git-switch: https://git-scm.com/docs/git-switch
  • Git Release Notes v2.23.0: https://github.com/git/git/releases/tag/v2.23.0