Git 新手必读:为何新版本推荐使用 Switch 而非 Checkout 进行分支切换

引言

在版本控制系统 Git中,分支管理是开发流程中不可或缺的一部分,而git checkout与git switch正是实现分支切换这一核心操作的两大工具。尽管两者在功能上有一定的相似性,特别是在创建和切换分支时,但Git在2.23版本引入git switch的目的正是为了改善用户体验,提高命令的语义清晰度和安全性。

为什么推荐使用 git switch 而非 git checkout 进行分支切换呢

  1. 明确的目的性:

    • git checkout 命令原本用于完成三个不同的任务:切换分支、检出某个特定提交或者恢复工作目录文件。这种多功能性有时会导致混淆,特别是对于新手用户。
    • git switch 命令专注于分支切换这一单一任务,使得意图更加清晰。
  2. 避免意外修改:

    • 在旧版 git checkout 中,如果不小心在工作目录中有未暂存改动的情况下切换分支,可能会丢失这些改动,因为 Git 会自动重置工作目录到目标分支的状态。
    • git switch 默认不会允许在有未提交更改的情况下切换分支,除非显式加上 -m 或 --merge 参数来尝试合并本地更改,或者 -f 或 --force 参数强制覆盖。
  3. 一致性与用户体验:

    • git switch 和 git restore 命令是在 Git 2.23 版本后引入的,它们分别负责分支切换和文件还原,这使得 Git 的命令集更加一致和易于理解。
    • 用户体验得到了改善,因为开发者不需要记忆 git checkout 的各种行为差异,而是可以根据命令名字直观地了解其功能。
  4. 简化命令行选项:

    • 创建并切换分支的操作,之前需要用 git checkout -b 实现,现在可以直接通过 git switch -c 完成,二者功能相同,但是后者更加符合命令逻辑。
  5. 友好错误提示:

    • git switch在处理不可行的分支切换时,提供的错误信息更加清晰和友好,可以帮助开发者更快识别问题并采取正确的行动。

总结来说,git switch 是为了提升易用性和减少潜在错误而推出的专门用于分支切换的新命令,它旨在提供一种更为安全、更专注且更易于理解的方式来管理 Git 分支。

应用场景

git checkout命令

git checkout 是一个全能型命令,过去不仅用于切换分支,还包括恢复工作目录文件到特定版本以及创建新分支并立即切换到该分支等功能。例如:

1.分支切换

使用 git checkout <branch-name> 命令可以快速切换到目标分支。

bash 复制代码
#将当前分支切换到名为 main 的分支
git checkout main 

2.创建新分支

使用 git checkout -b <new-branch-name> 命令可以快速创建并切换到新分支。

bash 复制代码
#将创建一个名为 feature-branch 的新分支,并立即切换到该分支
git checkout -b feature-branch 

3.撤销修改

有时候我们可能会误修改了某些文件,需要将其还原到之前的状态,这时候就可以使用 git checkout 命令来撤销修改。使用 git checkout -- <file> 命令可以将指定文件还原到最近一次提交的状态。

bash 复制代码
# 将还原 index.html 文件到最近一次提交的状态
git checkout -- index.html 

4.切换提交版本

使用 git checkout <commit-id> 命令可以切换到指定的提交版本。

bash 复制代码
# 将切换到提交 ID 为 abc123 的版本
git checkout abc123 

5.还原文件到指定版本

有时候我们可能需要将某个文件还原到指定的提交版本,而不影响其他文件的状态。 使用 git checkout <commit-id> -- <file> 命令可以将指定文件还原到指定的提交版本。

bash 复制代码
# 将 index.html 文件还原到提交 ID 为 abc123 的版本
git checkout abc123 -- index.html 

git switch命令

git switch 是一个新引入的命令,用于切换分支。与传统的 git checkout 相比,git switch 更加专注于分支切换操作,具有更清晰明了的命令用法。

1.分支切换

使用 git switch <branch-name> 命令可以快速切换到目标分支。

bash 复制代码
# 将当前分支切换到名为 main 的分支。
git switch main 

2.创建新分支

使用 git switch -c <new-branch-name> 命令可以快速创建并切换到新分支。

bash 复制代码
# 将创建一个名为 feature-branch 的新分支,并立即切换到该分支。
git switch -c feature-branch 

3.切换到上次访问的分支

有时候我们可能需要快速切换到上次访问的分支,而不需要记住分支名。使用 git switch - 命令可以快速切换到上次访问的分支。

bash 复制代码
# 切换到上次访问的分支。
git switch -

写在最后

通过使用 git switch 而非 git checkout 进行分支切换,我们可以提升分支操作的清晰度和安全性。作为新手,建议尽早熟悉并掌握新版本推荐的分支切换命令,以提高代码管理的效率和质量。

喜欢的话帮忙点个赞 + 关注吧,将持续更新 Git 相关的文章,还可以关注我的公众号 梁三石FE ,感谢您的关注~

相关推荐
guslegend5 小时前
脚手架入门:必要性、核心功能与执行原理
前端·架构·node.js·脚手架·前端工程化
Bazingga5 小时前
从0到1搭一个Agent:Spring AI显式ReAct循环完整实战
后端
律宏阔5 小时前
Flutter 调用 Go:从 c-shared + ffigen 到 @Native + Native Assets 踩坑记录
前端·flutter
LEE5 小时前
前端转型全栈 05:SQL 与迁移,AI 写的 SQL 怎么安全上线
前端·后端·ai编程
用户15741568165345 小时前
macOS 打包体积异常的排查实录
前端
数据掘金5 小时前
小程序埋点方案上线前要检查哪些点?我用一张检查清单过了二十多项
前端
站大爷IP5 小时前
Python的列表删除把我坑惨了,原来remove和pop的区别这么大
后端
Hooray6 小时前
后台管理框架存活率大调查(2026版)
前端
律宏阔6 小时前
Dart FFI 回调无法使用局部变量?使用 NativeCallable.isolateLocal
前端·flutter
hai_android6 小时前
一个公式看懂动态跨表查找:P8 + VLOOKUP
前端·javascript·vue.js